我在这里遇到了一个问题,就是在轨道上使用红宝石的狮身人面像的范围。
问题是:
我需要在思考sphinx时做这个范围
scope :for_current_user, lambda{
{:conditions => ["documents.user_id = ? OR documents.state != 'draft'", User.current.id]}
}
我最常用的方法是:
sphinx_scope(:sphinx_for_current_user){
{ :conditions => {:user_id => "#{User.current.id }", :workflow_state => '!draft'}}
}
但上面的狮身人面像范围是
“documents.user_id = 20 AND workflow_state!='draft'”
但是,我真正需要的是
“documents.user_id = 20 OR workflow_state!='draft'”
欢迎任何帮助。
感谢。
答案 0 :(得分:2)
对此的正确查询 - 没有范围 - 需要手动构建,可能看起来像这样:
Document.search "(@user_id 20) | (@workflow_state !draft)", :match_mode => :extended
目前在Thinking Sphinx中,您不能将查询作为sphinx范围的一部分提供 - 仅限选项。因此,虽然查询应该没问题,但范围不是一种选择。