Rails 与多个模型的多态关联

Rails Polymorphic Association with multiple models

是这样的:我有4个模型,分别是"owner"、"user"、"location"和"landlord"。所有这些模型共享电子邮件地址和电话。所以我正在考虑使用多态关联并且我进行了研究,但我只看到了 3 个模型的案例。如您所见,就我而言,我将拥有 3 个以上的模型。

那么,您认为在我想对所有电子邮件和电话号码使用 "repository" 这样的模型的情况下实现这种逻辑是个好主意吗?

使用那种关联有什么限制吗?。我在考虑一些模型,例如:

email
emailable
user
owner
landlord
location

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

提前致谢。

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

至于它是否是个好主意,我想说的是,如果您认为您需要将 contacts 作为与 contactable 模型分开的实体来工作,那么这是一个很好的选择解决方案。但是,如果您不需要直接处理 contacts 那么当您可以向这些模型添加 emailphone 字段时可能会过于复杂。