0

User と Daily の 2 つのモデルでアプリを作成しています。各ユーザーには、_多くの日課があります。毎日深夜に各ユーザーの日次レポートを作成しようとしています。レールでこれを行うにはどうすればよいですか? Backbone では、今から午前 0 時までの時間を見つけ、その時間のタイムアウトを設定してから、新しいモデルを作成し、その関数を再帰的に呼び出します。Rails: Reset a model attribute at specific time each dayを調べたところ、when と cron を使用するという提案がありましたが、自分がやろうとしていることを達成するためのより良い方法があるかどうかはわかりませんでした。

私が思いついた一時的な解決策は、現在のユーザーがまだ今日の日付の日課を持っていない場合、ユーザーがホームページにアクセスしたときに新しい日課を作成することでした。これには、ユーザーがその日にホームページを訪問した場合、その日のレポートしか作成されないという問題があります。ユーザーがホームページをナビゲートすると、レポートは作成されません。すべてのアクションにそのチェックを入れるのは、あまりにも煩わしいソリューションだと思います。このタスクを自動化する方法はレールにありますか?

編集: 私が持っていた別のアイデアは、after_create を Daily クラスに入れ、バックボーン ソリューションと同じソリューションを使用することでした。それはこれを達成するための最適な方法ですか?

4

2 に答える 2

0

バックグラウンドまたは非同期関数だと思うので、ロジックをビューやクライアント側に配置しない方がよいでしょう。信頼できません。最も簡単な方法は cron ですが、OS に依存します。Cronには他にも欠点があります。純粋な Ruby ソリューションが必要な場合は、gem clockwork をお勧めします。詳細を見る:https ://github.com/tomykaira/clockwork

于 2013-08-20T05:36:35.347 に答える