2012-05-02 4 views
2

Когда я выполнить этот запрос:Mongoid запрос - вызов метода размера выдает ошибку

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

Я получаю следующее сообщение об ошибке:

undefined method `size' for :comments:Symbol 

Но согласно документации здесь:

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

Это должно быть возможно. Итак, почему ошибка?

Примечание: «комментарии» - это отдельная коллекция от пользователя с отношением «has_and_belongs_to_many».

Я использую Mongoid 3.0.0 и 1.6.1 bson_ext

Спасибо заранее!

ответ

2

Это будет работать, если пользователь вводит комментарии, но не тогда, когда вы связаны с Пользователь на комментарий. Он работает для внедрения из-за оператора $ size (хотя это не очень эффективный запрос для выполнения. Лучше кешировать размер в отдельном поле).

0

Использование with_size, а не size, с Mongoid 3. Оно переведет на MongoDB $size оператор.

Queryable#with_size : Add $size selection. Matches documents who's array field has the exact size of the provided value. This is named with_size not to conflict with Ruby's Enumerable#size or Symbol#size ." (from the Origin Selection documentation)

Смежные вопросы