我很難搞清楚設置這種關聯的正確方法。has_and_belongs_to_many或多態has_many:通過?
我有3個模特:音樂家,樂隊和經理。每個人都可以有一個與他們相關的「水平」(壓力,快樂等)。
但我不知道如何正確地關聯我水平模型與其他3
我需要某種形式的has_many的:通過這就是多態?我究竟如何設置它?有一些其他類型的相關我需要嗎?
我很難搞清楚設置這種關聯的正確方法。has_and_belongs_to_many或多態has_many:通過?
我有3個模特:音樂家,樂隊和經理。每個人都可以有一個與他們相關的「水平」(壓力,快樂等)。
但我不知道如何正確地關聯我水平模型與其他3
我需要某種形式的has_many的:通過這就是多態?我究竟如何設置它?有一些其他類型的相關我需要嗎?
如果這就是你定義可以分配到特定的類模型的屬性的話,那麼你可能想使用更傳統的方法。而不是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)
}
有沒有約定型號,類別,而不是其他車型的實例相關聯。
是的,這將是一個多態關聯:
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_type
和leveled_id
添加到您的等級表。
澄清,是一個關聯的級別,說一個音樂家的實例,或所有音樂家? – bdon 2012-02-20 02:07:52