0

我有两个模型:摄影师和图片。一个摄影师有几张照片,一张照片属于一个摄影师。因此,模型摄影师我实施了策略 has_many:pictures 和模型 Picture belongs_to :photographer。

在这里好了。但是,摄影师可以选择一张图片作为您个人资料的封面。因此,我将字段cover_id 添加到表中,并指出模型摄影师belongs_to :cover, class_name: "Image"。我的问题是如何在另一端显示这种关系,模型图片,它已经与belongs_to:photographer有关系。

以为我会添加一个图片字段来表明会出现这种情况,但是,此解决方案不仅可以为同一位摄影师提供封面。

作为问题的补充,我应该在 Rails 中强制指定关系的两端吗?

Tks

4

1 回答 1

4

我首先要争辩说(个人资料)图片不拥有摄影师。相反,摄影师应该有一张个人资料照片。并且这种相同类型的物体也可以扮演摄影师拥有但用于个人资料照片以外的目的的照片。我认为 STI 是有道理的。

class Photographer < ActiveRecord::Base
  has_many :pictures
  has_one :profile_picture
end

class Picture < ActiveRecord::Base
  belongs_to :photographer
end

class ProfilePicture < Picture
  belongs_to :photographer
end

通过这种方式,您可以为摄影师分配一张个人资料图片,并为两个相似模特使用相同的数据库表创建多张图片。

photographer = Photographer.create!
profile_picture = ProfilePicture.create!

photographer.profile_picture = profile_picture
photographer.save!

photographer.pictures.create!    
photographer.pictures.create!
photographer.pictures.count #=> 3
于 2013-05-20T20:46:07.567 回答