#ruby-on-rails
#ruby-on-rails
Вопрос:
Когда я пытаюсь:
User.find_by_region_id(234).order("id desc")
Я получаю сообщение об ошибке с указанием неопределенного метода ‘order’
Должен ли я использовать другой стиль запроса?
Ответ №1:
Вы хотите:
User.order("id desc").find_by_region_id(234)
Это связано с тем, что find_by_xxx
возвращает объект model, тогда как order
вернет ActiveRecord::Relation
, к которому вы затем можете выполнить дальнейшие запросы.
Если вы хотите получить все результаты, где region_id равен 234, и вы хотите упорядочить, вы можете выполнить вызов метода, как и следовало ожидать.
User.where(:region_id=>234).order("id desc")
потому что where
возвращает ActiveRecord::Relation
Комментарии:
1. 1 Опередил меня, пока я возился в своей консоли rails. 🙂
Ответ №2:
find_by_xxx
возвращает только один объект. Если вы хотите найти первый объект, упорядоченный по ID, сделайте:
User.order("id DESC").find_by_region_id(234)
Если вы хотите, чтобы все объекты с этим идентификатором региона были упорядочены по ID, тогда выполните:
User.where(:region_id => 234).order("id DESC")