Почему отношение Active Record не возвращается в консоли? - PullRequest
6 голосов
/ 04 октября 2011

Я наконец-то начал обновлять свои Rails-приложения с 2.3.8 до 3.1.0. Я смотрел RailsCasts (http://railscasts.com/episodes/202-active-record-queries-in-rails-3) о запросах Active Record.

Когда я открываю консоль (rails c) и делаю запрос, подобный следующему:

articles = Article.order("name")

Вместо возврата отношений Active Record я вижу выполненный запрос. Что я здесь не так делаю?

Версия Rails: 3.1.0

RVM на 1.9.2

Спасибо за вашу помощь!


РЕДАКТИРОВАТЬ: я добавил скриншот из примера. enter image description here

Ответы [ 2 ]

8 голосов
/ 04 октября 2011

Класс ActiveRecord Relation настроен для выполнения запроса при вызове метода запроса, подобного .all, .last, .first, ....Список методов также включает .inspect, тот же метод, вызываемый консолью для отображения представления возвращаемого значения.

По этой причине вам кажется, что объект никогда не является отношением, потому что вы всегдапосмотрите результат запроса.

Но если вы проверите класс объекта, вы заметите, что это отношение

Article.order("name").class
# => ActiveRecord::Relation
8 голосов
/ 04 октября 2011

Вы все делаете правильно.Вы видите, что запрос выполнен, потому что консоль вызывает inspect метод на выходе.Попробуйте articles = Article.order("name").class

...