我无法找到正确的关联方式。
我有3个模特:音乐家,乐队和经理。每个人都可以有一定的“水平”(压力,快乐等)。
但我不确定如何正确地将我的Levels模型与其他3模式相关联。
我是否需要某种has_many:通过多态?我该如何设置呢?我需要一些其他类型的关联吗?
答案 0 :(得分: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)
}
没有将模型与类相关联的惯例,而不是其他模型的实例。
答案 1 :(得分: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_type
和leveled_id
。