1 select field ruby-on-rails thinking-sphinx
我是Thinking Sphinx for Rails的新秀.
当Sphinx找到一条记录时,它会给出表中的所有字段.我如何只选择所需的字段?
在我的情况下,我还需要参考另一个表.我怎样才能做到这一点?
谢谢
这是一个老线程,但正如我在寻找相同信息时发现的那样,我想我会分享我的答案.
它不是(据我所知)在Thinking Sphinx主页上明确定义,但模型上的搜索功能接受选项:选择 - 并且在回答第二个问题时,它也接受:加入,所以如果你有两个相关型号:
class Project < ActiveRecord::Base
attr_accessible :name
has_many :tasks
end
class Task < ActiveRecord::Base
attr_accessible :name
belongs_to :project
end
Run Code Online (Sandbox Code Playgroud)
你应该能够像这样搜索你的任务:
Task.search "Fix Bug",
:select => 'tasks.id, tasks.name, projects.name as project_name',
:joins => [:project]
Run Code Online (Sandbox Code Playgroud)
毫无疑问,这样做的方式稍微简洁一些,所以我很高兴能够得到纠正 - 尽管这个概念很有用!
编辑(思考sphinx v3)
:select在版本3中用作sphinx参数,而应添加:select和添加:joins到:sql散列.否则你会得到一些不那么明显的奇怪错误!
上面的例子然后变成:
Task.search "Fix Bug",
:sql => { :select => 'tasks.id, tasks.name, projects.name as project_name',
:joins => [:project] }
Run Code Online (Sandbox Code Playgroud)