2

按照这里的 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!

4

1 回答 1

1

nobrainer文档警告这种行为:

:or => [p1,...,pN]当至少一个谓词为真时,计算结果为真。

请注意,[:a => 1, :b => 2]与 相同[{:a => 1, :b => 2}],与 不同[{:a => 1}, {:b => 2}]

如果您添加一些大括号,您的查询可能会起作用:

 @articles = Article.where(:or=>[{:title=>/(?i)#{s}/}, {:text=>/(?i)#{s}/}])
于 2014-10-31T05:50:08.617 回答