【问题标题】:rails 3 arel eager load not working as expectedrails 3 arel eager load 未按预期工作
【发布时间】:2011-05-29 14:37:16
【问题描述】:
class User
  has_many :subscriptions
  ...
end

class Subscription
  belongs_to :user
  ...
end

当我执行User.includes(:subscriptions) 时,日志显示:

用户负载 (0.3ms) SELECT users.* FROM users 订阅负载 (0.2ms) SELECT subscriptions.* FROM subscriptions WHERE (subscriptions.user_id IN (1,2,3,5))

我本来期望一个连接查询,但我没有看到它。

有人对此行为有解释吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 activerecord


    【解决方案1】:

    这是预期的行为,因为在某些情况下它可能比连接更有效。从 Rails 2.1 开始,它被更改为执行至少 2 个查询。阅读与 :include 相关的内容(现在包含在 Rails 3 中):

    http://akitaonrails.com/2008/05/25/rolling-with-rails-2-1-the-first-full-tutorial-part-2

    在 rails 指南中的更多信息:

    http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations

    您可能想改用joins,具体取决于具体情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多