Rails:searchlogic搜索或条件

时间:2009-11-03 10:11:51

标签: ruby-on-rails activerecord searchlogic

我在版本2.3.5中使用'binarylogic-searchlogic'gem以及Rails 2.3.4。

我想要做的是在模型上搜索多个属性上的指定值。我通过链接所有内容来实现这一目标,如

User.first_name_or_last_name_or_email_like(value)

但是在这次搜索中越来越多的属性,这往往是丑陋的。相反,我想使用searchlogic的搜索机制,如下所示:

search = User.search
search.first_name_like = value
search.last_name_like  = value
..
@users = search.all

所以这是通过AND搜索的方式 - 但我想要的是OR。我找到了两种方法来实现这一目标,但两种方法都不起作用。

第一个:在条件

之前加上or_
search = User.search
search.first_name_like = value
search.or_last_name_like  = value
@users = search.all

这给了我The or_last_name_like is not a valid condition. You may only use conditions that map to a named scope

第二个:使用search.any

search = User.search
search.first_name_like = value
search.last_name_like  = value
@users = search.any

给了我undefined method任何'##。

有什么想法吗?我是否认为自述的正确点?

感谢您的非常欢迎!

编辑:一些丑陋的解决方法的时间:

search = User.search
search.first_name_like = value
search.last_name_like  = value
User.find(:all, :conditions => search.scope(:find).gsub('AND','OR'))

工作,但肯定不是要走的路,不是吗?

1 个答案:

答案 0 :(得分:2)

我认为没有其他方法可以做到这一点。默认情况下,它将使用AND连接参数。

OR 代码,似乎只适用于链接。