2

このクエリを実行すると:

User.where(:comments.size => 10)

次のエラーが発生します。

undefined method `size' for :comments:Symbol

しかし、ここのドキュメントによると:

http://mongoid.org/docs/querying/criteria.html

これは可能であるはずです。では、なぜエラーなのですか?

注:「comments」は、「has_and_belongs_to_many」関係を持つユーザーとは別のコレクションです。

mongoid3.0.0とbson_ext1.6.1を使用しています

前もって感謝します!

4

2 に答える 2

2

これは、ユーザーがコメントを埋め込んだ場合は機能しますが、ユーザーをコメントに関連付ける場合は機能しません。$ size演算子があるため、埋め込みに使用できます(ただし、これは実行するのに非常に効率的なクエリではありません。サイズを別のフィールドにキャッシュすることをお勧めします)。

于 2012-05-02T15:15:43.973 に答える
0

Mongoid 3ではwith_size、ではなくを使用します。これは、MongoDBオペレーターに変換されます。size$size

Queryable#with_size:選択を追加$sizeします。配列フィールドが指定された値の正確なサイズであるドキュメントに一致します。これは、Rubyまたは。with_sizeと競合しないように名前が付けられています。」(OriginSelectionのドキュメントから)Enumerable#sizeSymbol#size

于 2012-07-28T01:08:16.253 に答える