我正在构建一个需要支持重复事件的组日历应用程序,但是我提出来处理这些事件的所有解决方案看起来都像是一个黑客.我可以限制前方可以看到的距离,然后立即生成所有事件.或者我可以将事件存储为重复,并在日历上向前看时动态显示它们,但如果有人想要更改特定事件实例的详细信息,我将不得不将它们转换为正常事件.
我确信有更好的方法可以做到这一点,但我还没有找到它.对重复事件建模的最佳方法是什么,您可以在其中更改特定事件实例的详细信息或删除特定事件实例?
(我正在使用Ruby,但请不要让这限制你的答案.如果有一个特定于Ruby的库或其他东西,那么,这很有用.)
如果您的任务是构建支持重复事件的事件调度系统,您将如何做?如何删除定期活动时的处理方式?你怎么能看到未来事件何时发生?
即在创建活动时,您可以选择"每日重复"(或每周,每年等).
请回复一个设计.我已经习惯了Ruby/Rails,但是使用你想表达设计的任何东西.
我在接受采访时被问到这个问题,并且无法提出我喜欢的非常好的回复.
注意:这里已经被问到/已经回答了.但我希望得到一些更实用的细节,详情如下:
我试图在数据库中表示复杂的计划数据时遇到了一个有趣的问题.作为指导,我需要能够代表iCalendar - ics- 格式可以表示的全部内容,但是在数据库中.我实际上并没有实现任何与之相关的内容ics,但它提供了我需要能够为我的特定项目建模的规则类型的良好范围.
我需要允许基于每天多次,一周中的几天,一个月的一周,一个月,一年或这些的某种组合来允许表示单个事件或重复事件.例如,每年11月的第三个星期四,或每年的12月25日,或从11月2日开始的每两周一直持续到次年的9月8日.
我不关心插入效率,但查询效率至关重要.我最常做的操作是提供单个日期/时间或日期/时间范围,并尝试确定定义的时间表是否与日期/时间范围的任何部分相匹配.其他操作可能会更慢.例如,在2010年1月15日上午10:00到2010年1月15日上午11:00,查找至少部分时间匹配的所有计划.(即10:30 - 11:00的时间表仍然匹配.)
有什么建议?我看一下如何在RDBMS中表示预定事件?但它不包括我想建模的重复规则类型的范围.