思考狮身人面像:搜索多个模型:最佳实践?

时间:2012-03-17 17:32:21

标签: ruby-on-rails postgresql sphinx thinking-sphinx

我想添加带有类别的jquery自动完成功能。 该请求将使用Thinking Sphinx搜索多个模型(论坛主题,新闻,用户......)

所以在控制器中,我认为它看起来像那样

def autocomplete
 @news = Actu.search(params[:term]).map {|g| {:label => g.title, :category => "Actualités", :id => g.id}}
 @topics = Topic.search(params[:term]).map {|g| {:label => g.title, :category => "Topics", :id => g.id}}
 @anotherModel = ...

 respond_to do |format|
   format.js { render :json => @news+@topics+@anotherModel }
 end
end

那是有效的,但你怎么看待这些做法?

2 个答案:

答案 0 :(得分:4)

你可以试试这个很棒的语法

ThinkingSphinx.search 'pancakes', :classes => [Article, Comment]

http://freelancing-god.github.com/ts/en/searching.html

了解详情

答案 1 :(得分:3)

您可以搜索应用程序中的所有索引模型:

ThinkingSphinx.search(params[:term])

然后,您可以为每个模型方法定义,例如autocomplete_json,返回哈希值。

所以,你的行动

def autocomplete
  render :json => ThinkingSphinx.search(params[:term]).map(&:autocomplete_json)
end