ruby-on-rails - rails : searchlogic search with or conditions

标签 ruby-on-rails activerecord searchlogic

我在 2.3.5 版和 Rails 2.3.4 中使用了 'binarylogic-searchlogic' gem。

我想要做的是在模型上搜索多个属性的指定值。我通过将所有东西链接在一起来实现这一点

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'))

有效,但肯定不是要走的路,不是吗?

最佳答案

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

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

关于ruby-on-rails - rails : searchlogic search with or conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1666406/

相关文章:

ruby-on-rails - 如何使名为范围的搜索逻辑返回 DISTINCT(非重复项?)

mysql - 使用搜索逻辑的日期条件

ruby-on-rails - mongoid 中的 N+1 问题

ruby-on-rails-3 - RoR : MyModel. 后代在第一次调用后在 View 中返回 []?

ruby-on-rails - 如果验证失败,Rails 会跳过其他验证

ruby-on-rails - database.yml 中应该包含什么以在没有数据库的情况下使用 rails?

ruby-on-rails - 用Rails进行全文搜索

ruby-on-rails - 为什么这两个日期时间不同?

ruby-on-rails - 有没有一种方法可以使用 Rails 中的 Fast JSON API 仅选择外部对象的一个​​属性?

javascript - button_to 上的 remote true 不进行 ajax 调用