2

私はactionmailerに比較的慣れていませんが、パスワードを忘れた場合のメールを設定し、遅延ジョブとしてすでに実行しています。ユーザーがイベント開始前に「 _ __分/時間/日」などのオプションを選択してメール リマインダーを送信できるように、動的なメール リマインダーを設定したいと考えています。私はそれを完全にオープンエンドのままにしたくなく、次のオプションを含むドロップダウンを用意します:

  • イベント時に通知する
  • イベントの 5/15/30 分前に通知する
  • イベントの 1 時間前に通知する
  • イベントの 1 日前に通知する

これを達成するための最良/最も効率的な方法は何ですか? 遅延ジョブの run_at 関数でこれを達成できますか、それともドロップダウン オプションごとにメールを配信するように指示するものを呼び出す配信メソッドを作成する必要がありますか?

event_start - 60.minutes 

またはそのようなもの?私のアプリは Rails 3.0.11 を使用していますが、これは毎日の cron タスクとは異なります。これらはいつでも実行できるからです。また、ユーザーがイベントの日付を編集して開始日と終了日を変更できる場合、遅延ジョブで問題が発生しますか?

4

1 に答える 1

3

おそらく、この情報をデータベースに保存し、各イベントの前の期間ごとに 1 つの遅延ジョブを設定するのが最善です。

すなわち。イベント A の場合、遅延ジョブは 6 つだけで、イベントの 1 日前、1 時間前、30 分前、...

その後、遅延したジョブは、ユーザーがリマインダー メールを必要とするデータベースを検索できます。

代わりに、ユーザーがジョブを選択したときに遅延ジョブを設定した場合、ユーザーが考えを変えたらどうなるでしょうか? 特定のユーザーに対して遅延ジョブが実行されると、削除/変更が難しくなります。

また、多数のユーザーが一度にメールを送信したい場合、複数のジョブが同時に実行されてトラフィックの問題が発生する可能性があります。代わりに、ユーザーのリストを一度に 1 つずつ電子メールで送信する単一のジョブは、問題の原因となることが少なくなります。

于 2012-08-19T00:12:31.287 に答える