【问题标题】:Why Active Record relation is not returned in console?为什么控制台中没有返回 Active Record 关系?
【发布时间】:2011-10-04 10:02:44
【问题描述】:

我终于开始将我的 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

感谢您的帮助!


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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这似乎是问题所在。我添加了示例中的屏幕截图。您知道为什么示例视频中没有调用检查方法吗?
    • 伙计,我第一次尝试和 Arel 一起玩的时候有没有遇到过这个问题。
    【解决方案2】:

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

    因此,在您看来,对象永远不是关系,因为您总是看到查询的结果。

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

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

    【讨论】:

    • 感谢您的回答!我选择了 Bohdan 的答案,因为他更早地发布了它。 +
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多