Rails ActiveRecord中的复合外键

时间:2013-03-15 15:18:44

标签: ruby-on-rails database activerecord

我目前有一个名为Image的模型。此模型与Article

相关联
class Article < ActiveRecord::Base
  has_many: images
end

图像表包含article_id,因此图像与文章相关联。

但是,我想将我的图像与其他模型一起使用。因此,我想将article_id更改为owner_id之类的内容,并向owner_model模型添加名为Image的新属性。

这样其他模型也可以有很多图像。

任何想法是否可以优雅地使用ActiveRecord以及如何实现它?

在旁注中,我使用CarrierWave作为图像。

3 个答案:

答案 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)