我有这样的情况:用户购买产品,当交易处理完两天后,我需要向买家发送邮件通知。
此时我的想法是使用whenever gem并检查构建一个cron作业以在每天检查,如果过了2天,如果为真,则cron作业将发送邮件通知。
我不知道这样做是否可以......你能给我更好的解决方案吗?
答案 0 :(得分:1)
您可以将ActiveJob与perform_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