我在模型上有一个多态关联,Image
并且需要在模型上有两个关联Place
。就像是:
class Place < ActiveRecord::Base
has_many :pictures, as: :imageable, class_name: 'Image'
has_one :cover_image, as: :imageable, class_name: 'Image'
end
class Image < ActiveRecord::Base
belongs_to :imageable, polymorphic: true
end
这显然是行不通的,因为Image
模型不知道图片和cover_image之间的区别,并且每个图像都存储在
#<Image ... imageable_id: 17, imageable_type: "Place">
我正在考虑添加一imageable_sub_type
列来Image
存储子类型。所以我的图像看起来像:
#<Image ... imageable_id: 17, imageable_type: "Place", imageable_sub_type: "cover_image">
我可以轻松地从我的关联中仅检索具有该子类型的图像Place
:
has_one :cover_image, -> { where(imageable_sub_type: 'cover_image'), as: :imageable, class_name: 'Image'
但是在将图像添加到 a 时,我找不到设置此值的方法Place
(实际上它始终设置为nil
)。
有没有办法做到这一点?
我试图这样做:https://stackoverflow.com/a/3078286/1015177但问题仍然存在,imageable_sub_type
仍然存在nil
。