Rails Polymorphic Association与多个模型

时间:2017-07-29 20:32:57

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

情况就是这样:我有4个模型,分别是“所有者”,“用户”,“位置”和“房东”。所有这些型号共享电子邮件地址和电话。所以我想使用Polymorphic Association并进行了研究,但我只看到3个模型的案例。在我的情况下,你可以看到我将有超过3个模型。

那么,您是否认为实施这种逻辑是个好主意,我想为所有电子邮件和电话号码使用类似“存储库”的模型?

为了使用这种关联,有一个限制或某种东西?我在考虑一些模型:

email
emailable
user
owner
landlord
location

每个模型都有必要的字段。

提前致谢。

1 个答案:

答案 0 :(得分:1)

没有限制。多态关联是一个开放接口,任何其他模型都可以插入。在您的示例中,您可能拥有Contact模型,belongs_to :contactable, polymorphic: truecontacts表格需要两个索引列:contactable_id:integercontactable_type:string。任何其他模型都可以是contactable,只要has_one :contact, as: :contactable

如果它是个好主意,我会说如果你认为你需要与contacts作为contactable模型中的单独实体一起工作,那么这个是一个很好的解决方案但是,如果您不想直接与contacts打交道,那么只要向这些模型添加emailphone字段,就可能会过于复杂。