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

Send notification to user after a while Rails

我有这样的场景:用户购买了一个产品,交易处理后两天后,我需要向买家发送邮件通知。

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

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

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

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

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

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

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