在此处遵循nobrainer文档:http://nobrainer.io/docs/querying/
我正在尝试进行OR查询,以查找关键字与标题或文本字段匹配的文章。。。
以下查询未返回结果。。。
s = 'something'
@articles = Article.where(:or=>[:title=>/(?i)#{s}/, :text=>/(?i)#{s}/])
我用下面的查询检查了我的正则表达式,它有效。。。
@articles = Article.where(:title=>/(?i)#{s}/)
有人能帮助我们了解如何进行OR查询吗?谢谢
更新:
只有在两个字段中都找到搜索词时,查询才会返回结果。。。所以它看起来像是AND而不是OR!
nobrainer文档警告这种行为:
:or => [p1,...,pN]
在至少有一个谓词为true时计算为true。请注意,
[:a => 1, :b => 2]
与[{:a => 1, :b => 2}]
相同,而与[{:a => 1}, {:b => 2}]
不同。
如果添加一些花括号,您的查询可能会起作用:
@articles = Article.where(:or=>[{:title=>/(?i)#{s}/}, {:text=>/(?i)#{s}/}])