开发者

Why Active Record relation is not returned in console?

开发者 https://www.devze.com 2023-04-10 18:23 出处:网络
I have finally started upgrading my Rails apps from 2.3.8 to 3.1.0. I was watching RailsCasts (http://railscasts.com/episodes/202-active-record-queries-in-rails-3) about Active Record queries.

I have finally started upgrading my Rails apps from 2.3.8 to 3.1.0. I was watching RailsCasts (http://railscasts.com/episodes/202-active-record-queries-in-rails-3) about Active Record queries.

When I open up the console (rails c) and do query similar to this:

articles = Article.order("name")

Instead of returning Active Record relations, I see the query executed. What am I doing wrong here?

Rails version: 3.1.0开发者_JAVA百科

RVM on 1.9.2

Thank you for your help!


EDIT: I have added a screenshot from the example.

Why Active Record relation is not returned in console?


The ActiveRecord Relation class is configured to perform the query when a query method like .all, .last, .first, ... is invoked. The list of method also includes .inspect, the same method called by the console to display the representation of the return value.

For this reason it seems to you that the object is never a relation, because you always see the result of the query.

But if you inspect the object class, you'll notice it's a relation

Article.order("name").class
# => ActiveRecord::Relation


You're doing everything right. You see query executed because console invokes inspect method on output. Try articles = Article.order("name").class

0

精彩评论

暂无评论...
验证码 换一张
取 消