2009-09-07 5 views
0

STI와의 연관성을 사용하는 검색 논리 검색을 구현하려하지만 STI 레코드를 하위 클래스가 아니라 상위로 선택하는 문제가 있습니다.SearchLogic + STI

예 :

select * from users WHERE users.company LIKE

보다는

: 내가 "와 같은 아티스트 에이전트 회사"에 대한 검색을 수행 할 때
 
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 AS agents WHERE agents.company LIKE

이 문제를 ActiveRecord 클래스 수준에서 우선 적용 할 수 있는지 궁금합니다 (예 : 연관 I 에이전트가로드 될 것이라는 것을 지정할 수 있다면 as => : 에이전트 또는 그 라인을 따르는 무언가), 또는 searchlogic에 패치를 적용해야하는지, 아니면이를 수행하기 위해 내가 할 수있는 일이 무엇인지 생각하고있었습니다.

나에게 일어난 또 다른 옵션 중 하나는 그 사람의 에이전시 목록이 포함 된 필드를 사용자 테이블에 추가하는 것입니다.

라는 이름의 범위 : 기관을 포함, 람다 {예를 들어 users.agencies => 기관 한 명, 청 두 이름

답변

0

은 내가 작가 클래스에 명명 된 범위를 추가, 잘 작동하는 것 같군 해결책을 발견 | c | {: 에이전트 : => 조인 조건 => {: 에이전트 사용자 => {: 기업 => C}}}} 검색 필드가 이제 검색이라고

는 [아티스트 기관 포함]