0

モデルのスケジュールされた更新を1時間ごとに実行しようとしていますが、それが24時間以上前の最後の更新である場合に限ります。以下は、私が持っている場合にのみ機能@rentals = Rental.allしますが、.where(..)を追加すると、次のようになりますwrong number of arguments (2 for 1)

def delayed_stat_updates
  @rentals = Rental.where("updated_at < ?", 24.hours.ago)
  StatsController.delay(queue: 'stats').stat_updates(@rentals)
  StatsController.delay(queue: 'stats').index_check(@rentals)
  StatsController.delay(queue: 'stats').update_stats_error_attribute(@rentals)
  StatsController.delay(queue: 'stats').error_notification_email
end

どうすればこれを解決できますか?また、これはこれらの更新を実行するための良い方法ですか?以前は、各メソッド内のオブジェクトを取得しましたが、更新の1つに時間がかかりすぎると、誤って次の更新のために余分なオブジェクトを取得し始める可能性があります。

4

1 に答える 1

4

Rental.where("updated_at < ?", 24.hours.ago)は完全に有効です。問題はArel(.where)オブジェクトとArray(.all)オブジェクトの違いが原因である可能性があると思います。ちょうど試して Rental.where("updated_at < ?", 24.hours.ago).all

于 2012-05-15T16:16:04.480 に答える