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 クエリの実行方法を理解するのを手伝ってくれる人はいますか? ありがとう。

アップデート:

クエリは、検索用語が両方のフィールドで見つかった場合にのみ結果を返します...そのため、OR ではなく AND のように機能しているように見えます!

4

1 に答える 1

1

nobrainerのドキュメントでは、この動作について次のように警告しています。

:or => [p1,...,pN]少なくとも 1 つの述語が true の場合に true と評価されます。

[: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 に答える