のために動作します。 Stackoverflowによれば、「編集キューがいっぱいです」というのは編集を提出しなかった理由です。
適切な構文:
Username.or({username: @username}).or({email: @email})
より簡潔なソリューション:
Username.or({username: @username}, {email: @email})
モンゴセレクタはに解決されます:
{"$or"=>[{"username"=>@username}, {"email"=>@email}]}
私がいたとして、私はこの質問を見つけました"創造のために解決しようとする"または「照会」。
文字列または要素の配列のいずれかと一致する場合は、Mongoの '$ in'セレクタを使用してMongoidクエリを記述する必要があります。
たとえば、特定のユーザー名と電子メールの配列があります。フィールドの少なくとも1つが、ユーザー名または配列内の電子メールのいずれかと一致するすべての結果を返したいとします。
@username = "jess"
@emails = ["[email protected]", "[email protected]", "[email protected]"]
User.or({username: ""}, {email: {'$in': @emails}})
モンゴセレクタはに解決されます:あなたは、データベース内の3つの電子メールの2でUsers
を持っている場合は、セレクタが2
の数を返します {"$or"=>[{"first_name"=>""}, {"email"=>{:$in=>["[email protected]", "[email protected]", "[email protected]"]}}]}
User
にusername
「jess」と3つの追加のUsers
があり、指定された電子メールの1つがある場合、セレクタは4のカウントを返します。それでもwhere
メソッドを使用したい場合は
スコープ内ではまだ 'any_of'を使用する必要があります。それ以外の場合は構文エラーが発生します。 – aledalgrande
リンクされたリンクは、 '.or'や' any_of'について何も教えてくれません。[こちら](https://github.com/mongodb/mongoid/blob/master/lib/mongoid/criteria/queryable/selectable)を参照してください。 rb)を使って詳細な文書と実装を確認する – silva96
スコープ内でself.orを使うこともできます( 'or'はルビのキーワードなので) – Shiyason