在此处遵循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}/)
有人可以帮助我们了解如何进行“或”查询吗?谢谢。
更新:
仅当在两个字段中都找到了搜索词时,查询才会返回结果...因此它看起来像是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}/}])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句