При использовании find_by_XXX вы все еще можете использовать order by? Я получаю ошибку - PullRequest
0 голосов
/ 11 апреля 2011

Когда я пытаюсь:

User.find_by_region_id(234).order("id desc")

Я получаю сообщение об ошибке, говоря, что неопределенный метод 'order'

Нужно ли использовать другой стиль запроса?

Ответы [ 2 ]

3 голосов
/ 11 апреля 2011

Вы хотите:

User.order("id desc").find_by_region_id(234)

Это связано с тем, что find_by_xxx возвращает объект модели, тогда как order возвращает ActiveRecord::Relation, который можно затем выполнить, выполнив дополнительный запрос.

Если вы хотите получить все результаты, где region_id равен 234, и вы хотите заказать, вы можете выполнить вызов метода так, как вы ожидаете.

User.where(:region_id=>234).order("id desc")

потому что where возвращает ActiveRecord::Relation

2 голосов
/ 11 апреля 2011

find_by_xxx возвращает только один объект.Если вы хотите найти первый объект, упорядоченный по идентификатору, выполните:

User.order("id DESC").find_by_region_id(234)

Если вы хотите все объекты с этим идентификатором региона, упорядоченные по идентификатору, выполните:

User.where(:region_id => 234).order("id DESC")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...