当模型已经属于其中一个模型时的多态关系

Polymorphic relationship when model already belongs to one of the models

我有 AreaClickMap。一个Area有多个ClickMap,一个ClickMap属于一个区域。简单。

问题是每个 ClickMap 也有一个目标,但目标需要是多态的,因为目标可以是多个模型之一,包括 Area。但这显然是一个问题,因为 Area 有很多 ClickMap 两次...

这是我目前得到的:

class Area < ActiveRecord::Base
  has_many :click_maps, dependent: :destroy
  has_many :click_maps, as: :targetable
end

class ClickMap < ActiveRecord::Base
  belongs_to :area
  belongs_to :targetable, polymorphic: true
end

感谢任何帮助。我现在可能只是愚蠢...

也许我需要插页式 Target 模型?

更新

我最后只是删除了 has_many :click_maps, as: :targetable 行。那是没有意义的。我只需要能够调用 click_map.targetable 并取回正确的对象。

包含 polymorphic association 之后,我认为您仍然不需要 has_many 直接关联 AreaClickMap 模型。