0

と呼ばれる STI がPersonあります。3 つのタイプがあります: ContactUserおよびTenantContact1つの組織にTenant属しているためorganization_id、「人」テーブルに列があります。

問題は、タイプUserに複数の組織がある可能性があるため、「users_privileges」という名前の専用テーブルがあることです。現在、多くのユーザーが 2 つの組織を持っているためorganization_id、表の「人」はnullタイプです。User

Person.alltypeの場合、テーブル「people」の列 organization_id をチェックして、「users_privileges」テーブルのhas_manyUserを探してはいけません。

4

1 に答える 1

0

これは、各サブクラスに正しい関係を設定することで実現できます。したがって、abelongs_toを Contact と Tenant に配置し、has_manyバリアントの 1 つを User に配置します。

もちろん、結果は、あなたが言うならPerson.all、結果のオブジェクトのいくつかは に応答し#organizations、いくつかは#organization. これを回避するには、#organizationsContact と Tenant にメソッドを追加し、配列内の 1 つの組織を返すだけにします。

于 2014-12-03T09:48:01.870 に答える