0

我想安排一个任务,在用户注册我的 heroku 应用程序后 1 周向他们发送提醒。

我想象它会是这样的:

task :send_reminders => :environment do
   User.send_reminder
end

在我的用户模型中

def self.send_reminder
  User.each do |user|
    if Time.now == user.created_at + 7.days
      ReminderMailer.delay.remind(user)
    end
  end
end

检查每条记录的 created_at 值是否已经过了一周,这是一个坏主意(占用测功时间)吗?

4

1 回答 1

2

一种选择是创建将用户添加到队列(可能使用Sidekiq)并将提醒延迟一周。这样您就不必重新检查每个用户的created_at价值。

就像是:

UserReminder.delay_until(5.days.from_now).send_reminder(@user.id)
于 2013-10-10T12:11:05.910 回答