我正在构建一个需要支持重复事件的组日历应用程序,但是我想出的处理这些事件的所有解决方案似乎都是一个 hack。我可以限制一个人可以看多远,然后一次生成所有事件。或者,我可以将事件存储为重复事件并在日历上向前看时动态显示它们,但如果有人想要更改事件的特定实例的详细信息,我必须将它们转换为正常事件。
我确信有更好的方法可以做到这一点,但我还没有找到。对重复事件建模的最佳方法是什么,您可以在其中更改或删除特定事件实例的详细信息?
(我正在使用 Ruby,但请不要让这限制你的答案。如果有特定于 Ruby 的库或其他东西,那么很高兴知道。)
我会为所有未来的重复事件使用“链接”概念。它们在日历中动态显示并链接回单个参考对象。当事件发生时,链接断开,事件变为独立实例。如果您尝试编辑重复事件,则提示更改所有未来项目(即更改单个链接引用)或仅更改该实例(在这种情况下将其转换为独立实例,然后进行更改)。后一种情况略有问题,因为您需要在循环列表中跟踪所有已转换为单个实例的未来事件。但是,这是完全可行的。
因此,从本质上讲,有 2 类事件 - 单个实例和重复事件。