2016-05-13 2 views
0

Попытка выяснить, почему ActiveAdmin ломается, ваша помощь приветствуется.ActiveAdmin has_many through - undefined метод `klass 'для nil: NilClass

EDIT: Оказывается, я столкнулся с ситуацией x-y problem. Я приношу свои извинения сообществу SO ...

Я предположил, что отношения были виновниками, но позже я узнал, что это еще одна проблема. Пожалуйста, смотрите ниже для обновленной версии этой проблемы:

Мои модели:

class Venue < ActiveRecord::Base 
    belongs_to :nightclub 
    has_one :nightclub_boss, through: :nightclub 

    belongs_to :rp_boss 

    has_many :memberships 
    has_many :rps, through: :memberships 

    belongs_to :captain 

    has_many :reservations 
    has_many :payments, through: :reservations 

    has_many :cutoffs 
    has_many :cutoff_payments, through: :cutoff 

    has_many :favorites 

    has_many :schedules 
end 

class Membership < ActiveRecord::Base 
    belongs_to :venue, dependent: :destroy 
    belongs_to :rp, dependent: :destroy 
end 

class Rp < User 
    has_many :memberships 
    has_many :venues, through: :memberships 

    has_many :nightclubs, through: :venues 
    has_many :nightclub_bosses, through: :nightclubs 

    has_many :rp_bosses, through: :venues 
    has_many :captains, through: :venues 

    has_many :reservations 
    has_many :payments, through: :reservations 

end 

EDIT: читайте ниже моего предыдущего объяснения, в противном случае я это исправил, выполнив следующие действия:

  • Я изменил модель таблицы соединений от venue_rp до membership. Это моя миграция:

    class CreateMemberships < ActiveRecord::Migration 
        def change 
        create_join_table :rps, :venues, table_name: :memberships do |t| 
         t.index [:rp_id, :venue_id] 
         t.index [:venue_id, :rp_id] 
        end 
        end 
    end 
    
  • Поскольку это не сработало, я ткнул и побежал отладчик, чтобы найти то, что было неправильно. Я обнаружил, что я испортил вверх отношения с отсечкой в ​​Выставочных:

я имел:

has_many :cutoffs 
has_many :cutoff_payments, through: :cutoff 

Необходимо, чтобы сделать это множественное число:

has_many :cutoffs 
has_many :cutoff_payments, through: :cutoff*s* 

После того, что исключение ушел ,

В случае, если вы столкнулись с другой проблемой в activeadmin, такие как:

undefined method `memberships_id_eq' for Ransack::Search<class: Venue, base: Grouping <combinator: and>>:Ransack::Search 

Просто удалите Ransack фильтр для модели membershiphas_many through:. Для этого случая использования нет необходимости фильтровать мою информацию, и поэтому я просто удалил его.

[OLD] Объяснение: Мне нужно назначить много Rps на определенное место, и множество мест для определенного Rp, поэтому я использовал модель соединения (venue_rp), подкрепленную таблицей соединений, чтобы моделировать эту информацию.

Пока все хорошо, оно работает как шарм на консоли рельсов.

Однако мне нужно предоставить пользователям администратора формы с данными CRUD, поэтому я пошел по пути ActiveAdmin. Поэтому я иду вперед и зарегистрировать Venue модель:

ActiveAdmin.register Venue do 

    scope_to :current_user, if: proc{ current_user.is_nightclubboss? } 
    menu priority: 3 

end 

Идея заключается в том, что superadmins сможет увидеть всю информацию в приложении, и ночной клуб боссы будут видеть только информацию, которая касается их.

До сих пор так хорошо, я ожидал, что я буду видеть индекс по умолчанию и формы для activeadmin в местах (Sucursales означает залы в следующем скриншоте):

enter image description here

Но когда я нажимаю на входе в залы меню activeadmin бегаю в проблему отражения:

enter image description here

То, что я пытался это переписать ассоциации, ни кости до сих пор. Я что-то с ними делаю?

+1

Только что увидел начальную проблему с этим при чтении. Ваша таблица соединений должна быть rps_venues, а не event_rp. Rails ожидает, что имена таблиц будут множественными и в лексическом порядке! – bkunzi01

+1

Отлично, я пошел вперед и изменил эту связь, но я все равно столкнулся с той же проблемой. Оказывается, это была проблема с другой моделью в конце концов! Я улучшу свой вопрос, чтобы объяснить больше. –

+0

Вопрос обновлен. Я отправлю решение, когда сообщение позволит мне. Спасибо @ bkunzi01 –

ответ

0

С этим я столкнулся с проблемой x-y.

Проблема не связана с вопросом.

Смежные вопросы