0

期間 (文字列) と完了 (ブール値) の 2 つのフィールドを持つサイクル モデルがあります。ユーザーがサイクルを作成するとき、期間 (たとえば 30 分) を入力すると、サイクルは未完了 (ブール値 0) に設定されます。サイクル期間 (30 分) の後にそのデータベース エントリを更新して、サイクルを完了 (ブール値 1) としてマークするにはどうすればよいですか? これを ruby​​/rails コードで処理する方法はありますか、それとも JavaScript 関数を実行する必要がありますか?

目標は、Cycle.all(:conditions..) を使用して完了したすべてのサイクルを見つけて表示し、SQL データベースを呼び出すことができるようにすることです。私は「完了?」と書きました。サイクルの年齢を期間と比較するサイクル モデルのメソッドですが、これは SQL の find メソッドには役に立ちません。

これに取り組む最善の方法は何ですか?ありがとう!

4

2 に答える 2

2

次のようなものを実行するレーキタスクを定義します…</p>

desc "Expire old cycles"
task :cron => :environment do
  expired = Cycle.all :conditions => ["expiration < ?", DateTime.now]
  expired.each { |c| c.expire! }
end

c#expire!データベースで期限切れとしてマークするメソッドはどこにありますか。次にrake cron、cronジョブを介してN分ごとに実行するように設定します。

SQLでこれを行うことに慣れている場合は、クエリを記述してこれを最適化できますUPDATE cycles SET complete = 1 WHERE expiration < NOW();

于 2011-01-19T03:40:40.810 に答える