我目前有一个名为Image
的模型。此模型与Article
。
class Article < ActiveRecord::Base
has_many: images
end
图像表包含article_id
,因此图像与文章相关联。
但是,我想将我的图像与其他模型一起使用。因此,我想将article_id
更改为owner_id
之类的内容,并向owner_model
模型添加名为Image
的新属性。
这样其他模型也可以有很多图像。
任何想法是否可以优雅地使用ActiveRecord以及如何实现它?
在旁注中,我使用CarrierWave作为图像。
答案 0 :(得分:3)
您可以使用多态关联。
rails guide有一个与你的问题相关的简洁例子。
class Picture < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
end
class Employee < ActiveRecord::Base
has_many :pictures, :as => :imageable
end
class Product < ActiveRecord::Base
has_many :pictures, :as => :imageable
end
答案 1 :(得分:1)
您是否研究过多态关联? Ryan有一个视频:http://railscasts.com/episodes/154-polymorphic-association
它允许您将不同的类与图像相关联。
答案 2 :(得分:1)