我在申请时使用太阳黑子。在我的应用程序中,人们可以在他的帐户中上传声音,我使用太阳黑子来研究声音的名称。但我的搜索发现所有声音,而不仅仅是用户的声音。
在我的控制器中我写道:
if params[:search].present?
@search = Sunspot.search(Sound) do
fulltext params[:search]
end
@sounds = @search.results
else
@sounds = Sound.order(:title).all
end
respond_to do |format|
format.html # index.html.erb
format.json { render json: @sounds }
end
但是我列出的所有声音不仅仅是用户的声音。
我希望我的要求很清楚。
感谢您的帮助。
答案 0 :(得分:1)
在太阳黑子中我们有:在那里我们可以传递你自己的过滤器,如
Sounds.search do
fulltext 'your text'
with :user_id, 1
end
或
if params[:search].present?
@search = Sunspot.search(Sound) do
fulltext params[:search]
end
@sounds = @search.results
else
@sounds = Sound.order(:title).all
end
respond_to do |format|
format.html # index.html.erb
format.json { render json: @sounds }
end
无论如何@sounds具有所有值,因此你可以编写一个范围by_user,你可以轻松地过滤它。
喜欢@sounds.by_user(@user.id)
更多信息请参阅Railcast,Github,sunspot.github.io