情况就是这样:我有4个模型,分别是“所有者”,“用户”,“位置”和“房东”。所有这些型号共享电子邮件地址和电话。所以我想使用Polymorphic Association并进行了研究,但我只看到3个模型的案例。在我的情况下,你可以看到我将有超过3个模型。
那么,您是否认为实施这种逻辑是个好主意,我想为所有电子邮件和电话号码使用类似“存储库”的模型?
为了使用这种关联,有一个限制或某种东西?我在考虑一些模型:
email
emailable
user
owner
landlord
location
每个模型都有必要的字段。
提前致谢。
答案 0 :(得分:1)
没有限制。多态关联是一个开放接口,任何其他模型都可以插入。在您的示例中,您可能拥有Contact
模型,belongs_to :contactable, polymorphic: true
。 contacts
表格需要两个索引列:contactable_id:integer
和contactable_type:string
。任何其他模型都可以是contactable
,只要has_one :contact, as: :contactable
。
如果它是个好主意,我会说如果你认为你需要与contacts
作为contactable
模型中的单独实体一起工作,那么这个是一个很好的解决方案但是,如果您不想直接与contacts
打交道,那么只要向这些模型添加email
和phone
字段,就可能会过于复杂。