这可能是一个新手问题,但我无法找出最佳解决方案。
我有一个Color
模型和一个Cover
模型。
大部分时间,封面has_one :color
。也许百分之一,封面has_many :colors
。
我是否必须在两个模型之间实现has_many :through
关联?这似乎是多余的。定义这种关系的最佳做法是什么?
答案 0 :(得分:1)
我认为你应该涵盖Cover has_many :colors
时的一般情况。所以这是一个多对多的关系。在这种情况下,您将有两个选项:
如果您只需要在联接表中存储cover_id
和color_id
,请使用加入表,这样您就可以使用has_and_belongs_to_many
来定义你的协会。使用此选项,您将必须创建连接表。
使用加入模式,如果您不仅要存储cover_id
和color_id
,还要存储其他属性,并且需要进行一些计算,你必须使用has_many :through
来定义你的关联。使用此选项,您将不得不创建新模型。
答案 1 :(得分:0)
封面has_many :colors
是最好的方式,即使只有一个案例需要它。