一段时间后Rails向用户发送通知

时间:2015-09-04 09:24:17

标签: ruby-on-rails ruby ruby-on-rails-4.2 cron-task

我有这样的情况:用户购买产品,当交易处理完两天后,我需要向买家发送邮件通知。

此时我的想法是使用whenever gem并检查构建一个cron作业以在每天检查,如果过了2天,如果为真,则cron作业将发送邮件通知。

我不知道这样做是否可以......你能给我更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

您可以将ActiveJobperform_later一起使用,例如:

NotificationSendJob.set(wait: 2.days).perform_later(record)

请注意,并非所有后端都支持此功能。您可以在此处查看检查功能矩阵:http://api.rubyonrails.org/classes/ActiveJob/QueueAdapters.html

答案 1 :(得分:1)

相反,无论何时使用,我建议使用sidekiq,它是一个后台处理库。 cron作业必须每天执行(在您的特定情况下)。它不会考虑是否必须发送邮件。即使没有发送邮件,仍然会执行该作业,这是一种错误的方法。

您可以使用像sidekiq这样的后台处理库来在后台安排作业。结帐https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs