2016-05-13 71 views
0

試圖找出爲什麼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 

只需卸下洗劫過濾器爲membershiphas_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意味着在下面的截圖場地):

enter image description here

但是當我點擊就在activeadmin菜單場館進入我碰到反射問題:

​​

我已經試過是重寫協會,至今沒有骰子。我做錯了他們嗎?

+1

剛剛看到最初的問題,而通讀。你的連接表需要是rps_venues而不是venue_rp。 Rails希望表名按照詞彙順序複數化! – bkunzi01

+1

出色地說,我繼續並重新組織了這個協會,但我仍遇到同樣的問題。畢竟,這是一個不同模型的問題!我會改進我的問題來解釋更多。 –

+0

問題已更新。我會在帖子啓用時發佈解決方案。謝謝@ bkunzi01 –

回答

0

我遇到了一個x-y問題。

問題與問題無關。