我正在构建一个需要支持重复事件的群组日历应用程序,但我提出的所有处理这些事件的解决方案似乎都是一个漏洞.我可以限制一个人向前看的距离,然后一次生成所有事件.或者我可以将事件存储为重复事件,并在日历上展望future 时动态显示它们,但如果有人想更改事件特定实例的详细信息,我必须将它们转换为正常事件.

我肯定有更好的方法,但我还没有找到.对重复发生的事件建模的最佳方法是什么,您可以在其中更改或删除特定事件实例的详细信息?

(我使用的是Ruby,但请不要因此而限制你的答案.不过,如果有Ruby特定的库或其他东西,很高兴知道.)

推荐答案

我会对所有future 重复发生的事件使用"链接"概念.它们会动态显示在日历中,并链接回单个参考对象.当事件发生时,链接断开,事件成为独立实例.如果试图编辑重复事件,则提示更改所有future 项目(即更改单链接引用)或仅更改该实例(在这种情况下,将其转换为独立实例,然后进行更改).后一种情况有点问题,因为您需要在您的循环列表中跟踪所有已转换为单个实例的future 事件.但是,这是完全可以做到的.

因此,本质上,有两类事件——单一实例和重复事件.

Ruby相关问答推荐

清理 jruby 中输入数据的编码错误

根据部分已知值判断数组内容的简洁 Rubyist 方法是什么?

令人惊讶的有效 Ruby 语法:% 无处不在

Ruby 是否提供了一种使用指定编码执行 File.read() 的方法?

如何记录在 Ruby 程序中调用的每个方法?

Ruby 中的字符串是可变的吗?

jekyll 调试或打印所有变量

我可以在 Ruby 2.x 中要求命名参数吗?

Broken pipe (Errno::EPIPE)

需要必要的库和/或头文件时如何安装 ruby​​-debug

Ruby Koan 151 引发异常

动态设置 Ruby 对象的属性

Mustache Templates 可以做模板扩展吗?

运行 Ruby 命令时,PATH 中不安全的世界可写目录 /Users/username,模式 040777

如何在 Rails 3 迁移中描述枚举列?

什么是 Rakefile?

Python 中的一切都像 Ruby 一样是对象吗?

如何在 Ruby 中将时间四舍五入到最接近的 15 分钟?

通过多个分隔符拆分字符串

如何判断一个类是否已定义?