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

収集は、ユーザーに関連付けられている注文ごとに個別の 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

これを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 に答える