【发布时间】: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