0

我很難找出正確的方法來設置這種關聯。如何設置多態has_many:through?

我有3個模特:音樂家,樂隊和經理。每個人都可以有一個與他們相關的「水平」(壓力,快樂等)。

但我不知道如何正確地關聯我的水平與其他3

需要有與不同的項目連接水平,並將當前水平是什麼樣的中介模式。

我需要某種has_many:通過多態嗎?我究竟如何設置它?有一些其他類型的相關我需要嗎?

enter image description here

我之前問過類似的問題,但沒有解釋什麼,我試圖做一個徹底的可怕的工作,所以這是我的第二次嘗試。

回答

1

ItemLevels需要一個種類就知道它是什麼關聯:然後

class ItemLevel < ActiveRecord::Base 
    # levelable_id :integer 
    # levelable_type :string(255) 
    belongs_to :levelable, :polymorphic => true 
    has_many :levels 
end 

class Musician < ActiveRecord::Base 
    has_many :levelables 
end 

class Musician < ActiveRecord::Base 
    has_many :levelables 
end 

class Manager < ActiveRecord::Base 
    has_many :levelables 
end 

級別只需要知道什麼ItemLevel與其關聯:

class Level < ActiveRecord::Base 
    belongs_to :item_level 
end 

如果你想成爲嚴格,你應該在你的Level模型中加入一些驗證來檢查它是否有ItemLevel和被實例化的類型。