我有一个名为Person
的STI,我有3种类型:Contact
,User
和Tenant
。 Contact
和Tenant
属于一个组织,因此他们在“人员”表格中有一个organization_id
列。
问题是类型User
可能有多个组织,因此它有一个名为“users_privileges”的专用表。目前,“人员”表中的organization_id
对于null
类型为User
,因为许多用户都有两个组织。
当我说Person.all
时,是否有人告诉ActiveRecord,对于User
类型,它不能检查表“people”中的列organization_id并查找“_”中的has_many users_privileges“table?
答案 0 :(得分:0)
您可以通过在每个子类中设置正确的关系来实现此目的,因此您可以在Contact和Tenant中放置belongs_to
,同时将其中一个has_many
变体放入User。
结果当然是,如果你说Person.all
,一些结果对象会回复#organizations
,有些#organization
。您可以通过向Contact和Tenant添加方法#organizations
来解决此问题,并让它只返回数组中的一个组织。