2012-01-05 1 views
0

레일 레일 앱에 User 및 Listing 모델이 있습니다. 사용자는 많은 목록을 가지고 있으며 목록은 사용자에게 속합니다. 또한 사용자 테이블에 속성 이름 등급이 있습니다. 내가 원하는 것은 Listing 모델에서 키워드를 검색하고 User 모델의 rating 속성을 기준으로 정렬하는 것입니다. Sunspot solr in rails은 쿼리를 수행하는 데 도움이 필요합니다.

내가 목록 모델

searchable do 
    text :title, :default_boost => 3 
    text :description, :default_boost => 2 
    integer :category_id, :references => Category 
    integer :subcategory_id, :references => Subcategory 
    string :zipcode 
    time :created_at 
     double :user do 
     user.rating 
    end 
end 

에있는 그리고 이것이 내가

@search = Sunspot.search(Listing) do 
    keywords params[:q] do 
     fields :title 
    end 
    order_by THIS IS WHERE I NEED HELP  
    paginate :page => params[:page], :per_page => 20 
end 

답변

1

를 검색하려고 당신은 목록 searachable 방법 키워드 및 평가 속성을 추가 할 필요가 어떻게 것입니다 . 컨트롤러에 검색 작업에 다음

class Listing < ActiveRecord::Base 
    belongs_to :user 
    searchable do 
    text :keyword 
    integer :rating { user.rating } 
    end 
end 

Listing.search do 
    fulltext params[:q] 
    order_by :rating, :desc 
end 

더 많은 예제 http://sunspot.github.com/를 참조하십시오. 할 사용자 ... 끝이 때 수행해야합니다

코드를 보면, 당신은 귀하의 평가를 위해

double :user do 
    user.rating 
end 

double :rating do 
    user.rating 
end 
+0

에 검색 방법 변경해야합니다, 당신은 정의가 be : rating do ... end –

+0

답을 올바른 것으로 표시 하시겠습니까? –

+0

안녕하세요, Symana, 도와 줘서 고맙습니다. 자, 내가 무엇을 놓쳤는 지 정확히 알았습니다. 대신 integer : rating {user.rating}을 수행하면 integer를 수행해야합니다 : rating do user.rating end 누군가가 또한 그것을 찾고 있음 - – DeathHammer