0

我有一个名为 的 STI Person,我有 3 种类型ContactUserTenantContact并且Tenant属于一个组织,因此他们organization_id在“人员”表中有一列。

问题是该类型User可能有多个组织,因此它有一个名为“users_privileges”的专用表。目前,organization_id表中的“人”是null类型User,因为许多用户有两个组织。

无论如何要告诉 ActiveRecord,当我说Person.all,对于 type User,它不能检查表“people”中的列 organization_id 并在“users_privileges”表中查找 has_many?

4

1 回答 1

0

您可以通过在每个子类中设置正确的关系来实现这一点,因此您可以belongs_to在 Contact 和 Tenant 中放置一个,而has_many在 User 中放置一个变体。

结果当然是,如果你说Person.all,一些生成的对象会响应#organizations,还有一些#organization。您可以通过向 Contact 和 Tenant 添加方法来解决此问题#organizations,并让它只返回数组中的一个组织。

于 2014-12-03T09:48:01.870 回答