我正在使用 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'))
工作,但肯定不是要走的路,不是吗?