在不活动后24小时发送用户电子邮件,rails

时间:2016-01-17 01:31:19

标签: ruby-on-rails ruby email

基本上,如果用户在创建后的24小时内没有发布任何帖子,我想向用户发送电子邮件提醒。我对如何在没有先执行操作的情况下发送电子邮件感到困惑,例如createupdate

控制器 users_controller.rb

def run
  @user = current_user
  if Time.now.utc == @user.created_at + 24.hours && @user.microposts.empty?
    UserMailer.twentyfour_email(@user).deliver
  end
end

邮件程序 user_mailer.rb

def twentyfour_mailer
  @user = user
  mail(to: @user.email, subject: 'Post something on the site!')
end

2 个答案:

答案 0 :(得分:2)

您不需要通过控制器操作实现此操作,您只需要一个cron作业来启动任务(whenever gem就可以执行此操作)。这可能看起来像:

every 1.day, :at => '4:30 am' do
  runner "User.notify_lazy_users"
end

答案 1 :(得分:0)

轻松一点。

例如,您可以使用Delayed Job

UserMailer.twentyfour_mailer.delay(run_at: 24.hours.from_now)