-3

可能重复:
如何根据 Rails 中的用户日期输入每周继续向用户发送电子邮件

我正在构建一个允许用户插入信息名称、日期和电子邮件的系统。我希望系统在用户插入后每 7 天自动向其用户发送电子邮件。

这是我的邮件

class UserMailer < ActionMailer::Base
  default from: "from@example.com"
   def welcome_email(dop)
    @dop = dop
    @url  = "http://example.com/login"
    mail(:to => dop.mail, :subject => "Welcome to My Awesome Site")
  end
end

这是控制器:

def create
    @dop = Dop.new(params[:dop])

    respond_to do |format|
      if @dop.save
        UserMailer.welcome_email(@dop).deliver
        format.html { redirect_to @dop, notice: 'Dop was successfully created.' }
        format.json { render json: @dop, status: :created, location: @dop }
      else
        format.html { render action: "new" }
        format.json { render json: @dop.errors, status: :unprocessable_entity }
      end
    end
  end
4

2 回答 2

3

您需要编写一个 rake 任务并通过 cron 调用该任务。

例如:

task :send_email => :environment do
  Dop.where('last_email <= ?', 7.days.ago).each do |dop|
    UserMailer.welcome_email(dop).deliver
    dop.update_attribute('last_email', Time.now)
  end
end

现在设置您的机器 Cron 调度程序以每隔几分钟调用此 Rake 任务以自动发送电子邮件。

Cron是一个 Unix 调度程序,它以预定的时间间隔执行程序。

您需要使用以下命令编辑 crontab 文件crontab -e并输入以下内容:

*/5 * * * *  /bin/bash cd <path_to_your_app> && rake send_email

*/5 * * * *说你每5分钟运行一次。

于 2012-06-26T08:50:51.537 回答
0

寻找一个名为whenever

它完全符合您的要求。

于 2012-06-26T11:00:23.260 回答