【发布时间】:2013-02-04 13:15:00
【问题描述】:
用户订阅了包含最新视频的电子邮件,但他们还设置了何时收到这些电子邮件。
Subscription(user_id, frequency, day, time, time_zone)
user_id | frequency | day | time | time_zone
1 | daily | null | 16:00 | GMT
2 | weekly | friday | 11:00 | UTC
3 | weekly | monday | 18:00 | EST
我们如何才能在用户在他们的时区选择的确切时间和频率发送电子邮件而不会搞砸(例如发送双重电子邮件或错过时间)
唯一的频率是每天和每周,如果每天,则该天为空。
我使用 redis 作为数据库,让我知道如何正确地做到这一点!
【问题讨论】:
-
如果您使用延迟作业 - github.com/collectiveidea/delayed_job - 您可以将每个作业的 run_at 设置为您想要的任何内容(匹配您的订阅时间,每个计划一个作业),然后在作业完成时将其排入队列自己根据您的调度程序设置再次运行
-
您必须精确到什么程度?如果是一分钟,可以接受吗?
标签: ruby-on-rails ruby redis whenever