2009-11-03 82 views
6

我在版本2.3.5中使用'binarylogic-searchlogic'gem和Rails 2.3.4。Rails:searchlogic搜索条件或条件

我想要做的是在模型上搜索多个属性上的指定值。我通过链接一切实现这一共同喜欢

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 

因此,这是通过搜索方式 - 但我要的是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')) 

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

回答

2

我不认为有另一种方式来做到这一点。默认情况下,它将使用AND来加入参数。

代码,似乎只能用于链接。

+0

+1快速查看后,我同意这个答案。为了确认,你可以询问Searchlogic邮件列表。 – 2009-11-08 18:35:41