6

rails 中的 Cron 解决方案很多而且非常好。这不是我在这里挣扎的。

相反,我遇到的麻烦是让用户创建自己的重复任务(如提醒) - 特别是如何在数据库中建模和存储这些任务(一个好的 UI 也很重要 - 如果有的话会很棒那里的代码)。谷歌日历是一个很好的例子(添加事件的 UI,而不是整个日历)......他们应该能够每天下午 1 点 CST,或周一/周三/周五,或每周等。无论 cron 解决方案是什么然后需要轮询数据库以查看在该时间需要发送哪些提醒等。

有人在 Rails 中看到过一个很好的插件/宝石吗?好像有什么东西可以做,但我还没有找到。

谢谢!

4

4 回答 4

6

我最终推出了自己的解决方案,因为我不需要任何超级花哨的东西。

基本上我在数据库中添加了一个next_run日期时间和interval字符串列,它是(天、周等)之一。然后设置一个 cron 作业来运行以查找任何next_run已过去的日期。它运行它们,然后next_run根据列设置到将来的某个点interval

简单但适合我的需要。

于 2010-10-19T18:37:38.617 回答
1

目前正在考虑使用这样的插件将重复存储在表中 http://github.com/fnando/recurrence/tree/master

每个提醒都会有一个重复对象,并且提醒还会在应该发送下一个提醒时保留一个日期时间字段。然后cron可以...

get all reminder's whose "next_send" date has passed
for each reminder
  send it
  update the "next_send" field using the recurrence object
end

如果有更好的解决方案或者我走错了路,我们总是很感激输入。

于 2009-07-21T05:06:56.073 回答
1

我一直认为 ical(RFC,而不是程序)解决方案是处理重复事件的最佳方法。有一些很好的 Ruby 库可以处理 ical ,最新的一个是ri_cal

于 2009-07-21T13:24:59.803 回答
0

我目前遇到这个问题,我正在考虑的解决方案如下:

class AllowReoccuringTasks < ActiveRecord::Migration  
    def self.up  
        add_column :tasks, :reoccuring, :boolean  
        add_column :tasks, :period, :integer  
    end
end

其中 period 可以是 1(每天)、7(每周)或 14(每隔一周)。

如果您想支持其他类型的时间表,例如每个月、工作日、周末等,您可以添加一个名为“时间表”的列,并使用常量来表示不同的时间表类型。您也可以使用枚举插件

于 2010-11-03T03:01:39.767 回答