如何在使用Rake任务时检查一次电子邮件一次的最佳方法



我有简单的邮件,该邮件发送了用户每周的摘要和耙子任务,该任务向所有用户发送此电子邮件,并将其固定在Heroku Scheduler上。

我想每周发送此电子邮件,但无论我运行多少次rake send_weekly_digest

Mailer

class DigestMailer < ActionMailer::Base
  include Resque::Mailer
  default from: "company@email.com"
  def weekly_digest(user_id)
    @user = User.find(user_id)
    mail :to => @user.email, :subject => "Weekly Digest"
  end
end

耙任务

desc "Send weekly email digest"
task send_weekly_digest: :environment do
  User.all.each do |user|
    DigestMailer.weekly_digest(user.id).deliver
  end
end

在您的用户表中添加一个名为last_emailed_at或类似内容的列,然后在发送每周摘要时用时间戳更新该列。

然后,在您的耙子任务中而不是说用户。所有,只获取上周没有通过电子邮件发送的用户:

User.where("last_emailed_at < ?", 1.week.ago)

相关内容

最新更新