2011-11-28 39 views
0

我卡在这里与在轨道上使用红宝石狮身人面像的范围的小问题。狮身人面像的范围与OR

的问题是:

我需要做此范围内的思维狮身人面像

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 wor kflow_state!= '草案'”

但是,我真正需要的是

“documents.user_id = 20或workflow_state!= '草案'”

任何帮助是非常欢迎。

谢谢。需要手动构造,而且可能是这个样子

回答

2

这样做的正确的查询 - - 无范围:

Document.search "(@user_id 20) | (@workflow_state !draft)", :match_mode => :extended 

目前在思考狮身人面像,你不能提供查询作为狮身人面像的一部分仅限于范围的选项。所以,虽然查询应该没问题,但范围不是一个选项。