我的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
答案 0 :(得分: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