Rails多态关联,多个模型访问同一个东西

时间:2014-04-25 06:50:11

标签: ruby-on-rails associations polymorphic-associations polymorphism

如何设置多态关联,其中两个不同的模型可以访问同一个项目

class Image < ActiveRecord::Base
  belongs_to :imageable, polymorphic: true
end

class ModelA < ActiveRecord::Base
   has_many :images, :as => :imageable
end

class ModelB < ActiveRecord::Base
   has_many :images, :as => :imageable
end

我希望ModelA和ModelB访问相同的Image。因此,如果ModelA更新图像,ModelB图像也将更新。

更新

我正在尝试创建类似以下的内容

enter image description here

Event has many images
Person has many images
Person and Event reference the same image
When a image is added to a person from an Event the record has extra attributes.

这可以通过多态关联完成吗?

谢谢

1 个答案:

答案 0 :(得分:1)

我认为你应该使用ModelA和ModelB之间的关系来做到这一点。因为图像不在ModelA中共享。例如:

ModelA.find(1).images

不同
ModelA.find(2).images

修改 如果我理解正确,你不需要这里的多态关系。

您可以创建此关系

个人模特

has_many :event_images, :through => :person_event_images