我正在研究一个应用程序,我必须创建一个模型product
,其中有许多pictures
和一个主要的picture
。我想通过关系来对这种情况进行建模,而不是使用额外的布尔字段来判断一张图片是否是主图片。我认为解决方案是在product
中使用has_one
和has_many
关系,两者都链接到picture
,但我不知道如何做到这一点。
您将需要一些方法来区分您的"主"图片与其他图片。这可以通过多种方式实现:
一个单独的数据库表,例如main_pictures
class Product
has_many :pictures
has_one :main_picture
end
或Picture
上的其他属性。这可以是一个布尔值或其他字段。在下面的示例中,我们将在pictures
表上使用一个名为primary
的布尔属性。
class Product
has_many :pictures
has_one :main_picture, -> { where(primary: true) }
end