試圖找出爲什麼ActiveAdmin打破了我,你的幫助表示讚賞。ActiveAdmin has_many通過 - 未定義的方法`klass'爲零:NilClass
編輯︰原來我跑了一下x-y problem情況與此。我很抱歉SO社區...
我認爲has_many :venue_rps
關係是罪魁禍首,但後來我發現它是另一個問題。請在下面找一個更新的版本這個問題的:
我的模型:
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
編輯:
:閱讀下面的我以前的解釋,否則我通過以下操作解決了這個我將連接表模型從
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*
之後,這個例外是不見了。
undefined method `memberships_id_eq' for Ransack::Search<class: Venue, base: Grouping <combinator: and>>:Ransack::Search
只需卸下洗劫過濾器爲membership
has_many through:
型號:
如果您如遇到另一個問題activeadmin。對於這個用例,我們不需要過濾我的信息,因此我只是刪除它。
[老]說明:我需要分配許多Rps到一個特定的Venue,並且許多地點到達某個Rp,所以我使用了一個由連接表支持的連接模型(venue_rp
)來對此信息建模。
到目前爲止,它的工作原理類似於滑軌控制檯上的魅力。
但是我需要爲管理員用戶提供表單到CRUD數據,所以我採用了ActiveAdmin方式。所以,我繼續前進,我的註冊地點模型:
ActiveAdmin.register Venue do
scope_to :current_user, if: proc{ current_user.is_nightclubboss? }
menu priority: 3
end
的想法是,將superadmins能夠看到所有的信息在應用程序,和夜總會老闆將只能看到他們相關的信息。
到目前爲止好,我很期待,我會看到在場館默認的索引和表格activeadmin(Sucursales意味着在下面的截圖場地):
但是當我點擊就在activeadmin菜單場館進入我碰到反射問題:
我已經試過是重寫協會,至今沒有骰子。我做錯了他們嗎?
剛剛看到最初的問題,而通讀。你的連接表需要是rps_venues而不是venue_rp。 Rails希望表名按照詞彙順序複數化! – bkunzi01
出色地說,我繼續並重新組織了這個協會,但我仍遇到同樣的問題。畢竟,這是一個不同模型的問題!我會改進我的問題來解釋更多。 –
問題已更新。我會在帖子啓用時發佈解決方案。謝謝@ bkunzi01 –