2

我很難搞清楚設置這種關聯的正確方法。has_and_belongs_to_many或多態has_many:通過?

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

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

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

enter image description here

+0

澄清,是一個關聯的級別,說一個音樂家的實例,或所有音樂家? – bdon 2012-02-20 02:07:52

回答

0

如果這就是你定義可以分配到特定的類模型的屬性的話,那麼你可能想使用更傳統的方法。而不是kind使用類似record_type的東西,並在其上構建一個範圍。

那麼你要做的是獲取它們是在你的任何實體和這個列之間創建一個存取方法,而不是關係。事情是這樣的:

def levels 
    Level.for_record_type(self.class) 
end 

for_record_type是一個範圍:

scope :for_record_type, lambda { |record_type| 
    where(:record_type => record_type.to_s) 
} 

有沒有約定型號,類別,而不是其他車型的實例相關聯。

0

是的,這將是一個多態關聯:

class Level < ActiveRecord::Base 
    belongs_to :leveled, :polymorphic => true # maybe there's a better word than "leveled" 
end 

class Musician < ActiveRecord::Base 
    has_many :levels, :as => :leveled 
end 

你需要一個leveled_typeleveled_id添加到您的等級表。