0

我的 Order 模型中有以下范围:

scope :trial_almost_up, lambda { where :date_finished => 27.days.ago.midnight..27.days.ago.end_of_day }

每个订单都与一个用户相关联。因此,如果您运行 Order.trial_almost_up 并获取订单数组并运行以下命令:

o = Order.trial_almost_up
o.collect &:user

collect 为与用户绑定的每个 Order 运行单独的 SQL 语句。

User Load (0.6ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 11244 LIMIT 1
  User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1970 LIMIT 1

有没有办法把它组合成一个电话?

4

1 回答 1

1

你可以这样做。我不知道是否有更好的方法,但这是我现在唯一能想到的方法。

User.includes(:orders).where("orders.date_finished" => 27.days.ago.midnight..27.days.ago.end_of_day)

让我知道它是否有效,如果我找到更好的东西,我会编辑它

于 2012-05-20T00:45:40.483 回答