#ruby-on-rails-3 #mongoid #criteria
#ruby-on-rails-3 #mongoid #критерии
Вопрос:
Я бы хотел использовать методы критериев Mongoid ( http://mongoid.org/docs/querying/criteria.html ). У меня есть модель с именем College. В контроллере колледжа:
def index
@colleges = College.all_of(:sat_rmw.gt => 1200, :in_state_tuition.lt => 12000)
end
Это генерирует ошибку:
неопределенный метод `all_of’ для колледжа: класс
Должен ли я использовать критерии в модели колледжа, а не в контроллере? Заранее спасибо!
Ответ №1:
У меня тоже была такая же проблема (может быть ошибка в текущей версии, но я не могу найти никаких заявок на нее). В любом случае, вы можете повторить это поведение, используя where
and
вместо этого методы and . Ваш запрос выше станет:
@colleges = College.where(:sat_rmw.gt => 1200).and(:in_state_tuition.lt => 12000)
Комментарии:
1. Я заметил, что «где» работает, но теперь мне действительно интересно, почему методы критериев не работают. Я использую Rails 3.0.9 и Mongoid 2.2 — как насчет вас? (Я не использую Rails 3.1, потому что кажется, что с ним не работает множество плагинов, и я использую Mongoid 2.2, потому что 2.3, похоже, не работает с Rails 3.0.9).
2. Я только что провел быстрый тест в 2.1, 2.2 и 2.3. Казалось бы, это
all_of
было добавлено в 2.3 — вот почему у вас возникли проблемы. Лично я нахожу методы критериев where().и() гораздо более удобочитаемыми.