1

我目前有一个名为Image. 该模型与Article.

class Article < ActiveRecord::Base
  has_many: images
end

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

但是,我也想将我的图像与其他模型一起使用。因此我想象article_id变成类似的东西owner_id并添加一个名为模型owner_model的新属性。Image

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

知道这是否可以使用 ActiveRecord 优雅地实现以及如何去做?

在旁注中,我使用 CarrierWave 来拍摄图像。

4

3 回答 3

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
于 2013-03-15T15:22:30.887 回答
1

您是否研究过多态关联?Ryan 有一段视频:http ://railscasts.com/episodes/154-polymorphic-association

它将允许您将不同的类与您的图像相关联。

于 2013-03-15T15:22:30.883 回答
1

您正在寻找的是所谓的多态关联(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)。

于 2013-03-15T15:22:43.917 回答