2011-07-06 2 views
3

나는 belongs_to User라는 Technique 모델을 가지고 있으며 Thinking Sphinx에서 인덱싱됩니다.Thinking Sphinx를 사용하여 인덱싱 된 모델 개체 모음을 통해 검색

가 나는 또한 기술 객체의 배열 반환 내 모델의 방법이 있습니다

def possible_children(user) 
    user.techniques - (self.children + [self]) 
end 

이 단지 사용자가 가지고있는 기술을 걸립니다, 이미의 자녀 기술의 사람들을 차감 'self'기술 객체와 'self'자체를 가져 와서 나머지 기술 객체를 반환합니다.

그런 다음 컨트롤러에서 나는과 같이 가능한 자녀의 컬렉션을 인스턴스화 :

@possible_children = @technique.possible_children(current_user).search params[:search] 

이것은

확실하지 않음이 관련되지만 컨트롤러 인 경우에 "번호 정의되지 않은 메서드 '검색'"를 반환 이것이 일어나는 곳은 TechniquesController가 아닙니다.

내가하려는 것은 Model 메서드에서 반환 된 임의 컬렉션을 검색하는 것입니다.

아이디어가 있으십니까?

자세한 정보를 제공해야하는지 알려주세요. 고맙습니다.

답변

5

Thinking Sphinx에서는 불가능합니다. 적어도 간단하지는 않습니다.

possible_children = @technique.possible_children(current_user) 
Technique.search params[:search], 
    :with => {:sphinx_internal_id => possible_children.collect(&:id)} 

스핑크스가 자신의 ID를 가지고 있지만, 데이터베이스에서 기본 키 속성으로 저장됩니다 : 당신이 할 수있는 것은, 당신이에서 검색 할 개체를 사용하여 자신의 ID를 잡은 필터에서 그것을 사용하는 것입니다 Thinking Sphinx의 sphinx_internal_id

+0

고마워요, 그 트릭을 한 것 같습니다. – Mitya

+0

: sphinx_internal_id! 나는 30 분 동안 구글에서 이것을 찾고 있었다. 감사. – gtd