0

どのような設計上の決定を行う必要があるかについて混乱しています。

私は、ActionMailer の基本的な使用例を知っています。

  • ActionMaier を継承したクラスを作成する
  • 何を送信するか、誰に送信するか、誰から送信するかなどの方法を定義します。

ここで私は逸脱し、理解を失います。

通常、特定のアクションのコントローラーでメーラー モデルのメソッドを呼び出します。

def create
 @user = User.new(params[:user])
 if @user.save
   MyMailerClass.send_signup_email(@user).deliver
   redirect_to @user
 else
   render :new
 end
end

たとえば、ユーザーが X 日間サインインしていないかどうかに基づいてメールを送信したい場合はどうでしょうか。これを行うにはいくつかの方法があると確信していますが、どこを見ればよいかわからないため、レールのベストプラクティスの方法に興味があります。これは近いです特定の条件が満たされたときだけ、時間帯によっては送信したくありません。

ありがとう。

4

1 に答える 1

2

特定の条件をチェックするために定期的に実行され、それらの条件に基づいて電子メールを送信する cron ジョブが必要なようです。これは、コントローラから送信するのではなく、別のスクリプトから送信することを除いて、標準のメーラーで行うこととそれほどかけ離れたものではありません。私は通常、これのために rake タスクを書きます:

task :send_reminder_emails => :environment do
  users = User.where('last_login <= ?', 10.days.ago)
  users.each do |user|
    MyMailerClass.reminder(user).deliver
  end
end

で実行しrake send_reminder_emailsます。cron ジョブの設定方法に慣れていない場合でも、cron ジョブを設定する方法の例がたくさんあります。

于 2013-03-14T22:57:20.703 に答える