【问题标题】:Polymorphic relationship when model already belongs to one of the models模型已经属于其中一个模型时的多态关系
【发布时间】:2015-09-04 10:07:48
【问题描述】:

我有Areas 和ClickMaps。一个Area 有很多ClickMaps,一个ClickMap 属于一个区域。很简单。

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

这是我目前得到的:

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 并取回正确的对象。

【问题讨论】:

  • 如果有多态关系,为什么还需要直接关系?
  • @DVG 是的,现在我正在考虑它我很确定我需要做的是添加Target 模型,因为Area 实际上应该属于一个Target,同时也有很多ClickMaps。
  • @DVG 是的,没关系。查看更新。

标签: ruby-on-rails data-modeling


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2019-08-10
    相关资源
    最近更新 更多