为什么在控制台中不返回Active Record关系?

时间:2011-10-04 10:02:45

标签: ruby-on-rails activerecord ruby-on-rails-3.1 irb

我终于开始将我的Rails应用程序从2.3.8升级到3.1.0。我正在观看关于Active Record查询的RailsCasts(http://railscasts.com/episodes/202-active-record-queries-in-rails-3)。

当我打开控制台(rails c)并执行与此类似的查询时:

articles = Article.order("name")

我没有返回Active Record关系,而是看到了执行的查询。我在这做错了什么?

Rails版本:3.1.0

1.9.2上的RVM

感谢您的帮助!


编辑:我添加了示例中的屏幕截图。 enter image description here

2 个答案:

答案 0 :(得分:8)

你做的一切都是正确的。您看到执行了查询,因为控制台在输出时调用inspect方法。试试articles = Article.order("name").class

答案 1 :(得分:8)

ActiveRecord Relation类配置为在调用.all.last.first,...等查询方法时执行查询。方法列表还包括.inspect,控制台调用该方法显示返回值的表示形式。

由于这个原因,你似乎对象永远不是一个关系,因为你总是看到查询的结果。

但是如果你检查对象类,你会发现它是一种关系

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