STI との関連付けを使用する検索ロジック検索を実装しようとしていますが、STI レコードをサブクラスではなく親として選択するという問題があります。
例:
class Users
end
class Artist < User
has many :agents, :through => :agents artists
end
class Agent < User
has many :artists, :through => :agents artists
end
「ようなアーティストエージェント会社」を検索すると、エージェントとしてではなくユーザーとしてのエージェントに基づいて検索されます。
select * from users WHERE users.company LIKE
それよりも
select * from users AS agents WHERE agents.company LIKE
ActiveRecord クラス レベルでこの問題を回避できるかどうか疑問に思っています (たとえば、アソシエーションでは、エージェントが :as=>:agent またはそれらの行に沿ってロードされることを指定できるかどうかを考えていました)、または検索ロジックにパッチを当てる必要があるか、これを達成するために他に何ができるか.
私が思いついたもう 1 つのオプションは、ユーザーの代理店のリストを含むフィールドをユーザー テーブルに追加することです。例 users.agencies => エージェンシー 1 の名前、エージェンシー 2 の名前