【发布时间】:2015-09-21 06:22:33
【问题描述】:
我正在尝试使用 gem(或者也许有更好的解决方案?) 我一直在努力完成这项工作,但我不确定我是否做得对。
这是我的 schedule.rb :
every :day, :at => '12pm' do # Use any day of the week or :weekend, :weekday
runner "UserMailer.daily_mail"
end
我的用户邮箱:
def daily_mail(user)
@user = user
mail to: user.email, subject: "Mail journalier"
end
在我的 user.rb 中:
def send_daily_mail
UserMailer.daily_mail(self).deliver
end
问题是,我的项目中已经有邮件激活,它正在工作(我可以在 heroku 中测试它)。该应用程序会在创建帐户时发送一封邮件,因此在 UserController 中,有:
def create
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = "Veuillez contrôler votre boîte mail pour activer votre compte."
redirect_to root_url
else
render 'new'
end
end
但在这里,它会在操作后发送一封电子邮件。但是,如果我希望随时发送邮件,还需要做什么才能使其正常工作,以及由于我不在生产环境中,我该如何测试它(而且我认为无论何时都不能与 heroku 一起使用)?
最终的结果是在用户偏好中设置一个复选框,他将能够检查每日、每周或每月的更新,并相应地发送邮件。
谢谢
【问题讨论】:
-
您的脚本`runner "UserMailer.daily_mail"` 没有将用户传递给
daily_mail操作。您能否解释一下您对谁收到电子邮件以及何时收到电子邮件的要求? -
我的目标是在用户表中添加一个字段,如果他想接收每日邮件,则为一个简单的布尔值。我希望任务向激活此功能的每个用户发送邮件。
标签: ruby-on-rails ruby cron actionmailer