2013-02-01 2 views
0

타이어 검색 결과에서 current_user.id를 제외하려고 시도했지만 param을 Tire에 전달하고 검색에 고정 값 대신이를 사용하는 방법을 파악할 수 없습니다. 어떻게하면 current_user.id를 모델에 전달하고 검색 결과에서 제외시킬 수 있습니까?타이어가 param을 모델링하고 검색 할 때이 매개 변수를 사용합니다.

액티브 방법 :

Profile.where("user_id != ?", current_user.id) 

내 타이어 검색 블록 :

if params['people'] 
    tire.search(load: true, page: params[:page], per_page: 20, :default_operator => 'AND') do 
    query do 
     boolean do 
     must_not { string 'user_id: 1' } <== this works hardcoded 
     must_not { string 'user_id: < instead of 1 user current_user.id pass in true params?' }   
     end 
    end 
    to_curl 
    end 
end 

답변

1

당신이 "필수 스타일"는 README가 https://github.com/karmi/tire에 언급을 사용하려고 했습니까? 분실 후

search = Tire::Search::Search.new('articles') 
search.query { string('title:T*') } 
search.filter :terms, :tags => ['ruby'] 
search.sort { by :title, 'desc' } 
search.facet('global-tags') { terms :tags, :global => true } 
# ... 
p search.results 

은 아마 "선언"스타일이 서로 안에 많은 블록 주름, 컨텍스트 (CURRENT_USER) : 이것은 바로 추가 정보에서 인용이다. 부울 조건에 current_user_id를 얼마나 정확하게 삽입 했습니까?

+0

current_user.id는 Devise gem의 메소드입니다. 이것을 레일스 모델로 넘겨 줄 수는 없지만 ID를 얻을 수있는 유일한 방법은 양식에있는 조작 가능한 숨겨진 필드 (예 : user_id)를 사용하는 것입니다. 나는 아무도 특정 이드를 제외 할 수 없다는 이슈를 가진 것으로 보인다는 것을 이해하지 못한다 - 나는이 각도를 잘못된 각도에서 다루어야 만한다. – Rubytastic

+0

이것은 내가 추측하는 데 도움이 될 수있다. http://stackoverflow.com/a/2513456/790737 –

+0

검색은 어떻게 "스폰"됩니까? 컨트롤러에서? 그런 다음 컨트롤러에서 Rails 모델을 초기화하거나 가져올 때 모델이 current_user.id에 대해 "알 수있게"할 수 있습니다. 그러나 검색은 "스폰", "시작"등의 방법에 따라 달라집니다. 원래 검색은 (레이크 작업 일 수도 있음)에서 비롯됩니다. 추천을위한 –