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 天内未登录来发送电子邮件怎么办。我敢肯定有很多方法可以做到这一点,但对 Rails 的最佳实践方式感到好奇,因为我不知道该去哪里找。这很接近我不希望它在满足特定条件时根据一天中的时间发送。

谢谢。

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 回答