2

我对 actionmailer 比较陌生,但是我已经设置了忘记密码的电子邮件,并且已经将它们作为延迟作业运行。我想设置动态电子邮件提醒,用户可以在活动开始前选择“提醒我___分钟/小时/天”等选项并让它发送电子邮件提醒。我不想让它完全开放,并且会有一个包含以下选项的下拉列表:

  • 活动时提醒我
  • 在活动开始前 5/15/30 分钟提醒我
  • 活动开始前 1 小时提醒我
  • 活动前 1 天提醒我

实现这一目标的最佳/最有效方法是什么?延迟作业 run_at 函数能否完成此任务,或者我是否应该为每个下拉选项编写一个传递方法,调用某些内容来传递邮件

event_start - 60.minutes 

或类似的东西?我的应用程序使用的是 Rails 3.0.11,这与日常的 cron 任务不同,因为这些任务可以随时运行。此外,如果用户能够编辑更改开始和结束日期的事件日期,是否会导致延迟作业出现任何问题?

4

1 回答 1

3

最好将此信息存储在数据库中,并为每个事件之前的每个时间段设置一个延迟作业。

IE。对于事件 A,只有 6 个延迟作业,一个在事件前 1 天,另一个在 1 小时前,另一个在 30 分钟前,...

然后延迟的作业可以在数据库中查找用户需要提醒电子邮件的用户。

相反,如果您在用户选择它时设置延迟作业,那么如果他们改变主意怎么办?当延迟作业为特定用户运行时,删除/更改将变得更加困难。

此外,如果许多用户同时需要电子邮件,则可能会导致多个作业同时运行时出现流量问题。相反,一次通过电子邮件发送一个用户列表的单个作业会导致更少的问题。

于 2012-08-19T00:12:31.287 回答