2012-01-05 6 views
0

У меня есть модель User и листинг в моем приложении rails. Пользователь имеет много списков, и список принадлежит пользователю. У меня также есть рейтинг имени атрибута в таблице пользователя. Я хочу искать ключевое слово в модели листинга и заказать его на основе атрибута рейтинга модели пользователя.Sunspot solr in rails нужна помощь для выполнения какого-либо запроса

Это то, что я имею в модели Listing

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

Привет, Симана, большое спасибо за вашу помощь. Теперь я точно знаю, чего не хватает. Вместо того, чтобы делать целое число: рейтинг {user.rating}, я должен делать целое число: рейтинг делает user.rating end incase кто-то также ищет его - – DeathHammer