hade
hade

Reputation: 1715

Why Active Record relation is not returned in console?

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

RVM on 1.9.2

Thank you for your help!


EDIT: I have added a screenshot from the example. enter image description here

Upvotes: 6

Views: 3084

Answers (2)

Simone Carletti
Simone Carletti

Reputation: 176342

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

Upvotes: 9

Bohdan
Bohdan

Reputation: 8408

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

Upvotes: 8

Related Questions