2

这不是一个正常的用例,我可以使用诸如 paper_trail 或其他插件之类的东西,这是一种更复杂的方法来跟踪更改……但让我解释一下:

假设您有一份医疗日历,上面有预约、主治医生和客户。

假设您是比尔,您负责规划接下来几周的日程安排。在为下个月安排了所有数百个约会之后,您将时间表发送给您的医生和客户。

显然,如果您提前 4 周计划,您原来的日程安排就会发生变化(您因为生病、客户死亡而更换医生,您更改预约的开始时间等)

因此,您需要发送更新的日程安排。但很明显,您只想向那些受日程变化影响的客户或医生发送电子邮件。

你需要弄清楚的是:

  • 新任命?
  • 更改约会?
  • 取消约会?

起初看起来相当简单,您可以只记住上次发送时间表的时间戳,然后使用 after_save、after_destroy 回调跟踪更改。

不幸的是,这也会导致一些棘手的情况,例如,您删除了一位医生,然后再次将同一位医生添加到该预约中。您会得到 2 个更改,这些更改显然不是“真正的”更改。

我喜欢的是单独的表格,我在其中存储这些更改,稍后查看它们并将它们发送给医生和客户。

我真的很好奇是否有人做了类似的事情,或者有一个很好的方法来解决这个问题。:)

谢谢 !

4

2 回答 2

1

观察状态变化的最简单方法相当简单:使用日志文件。在你的情况下,它将是一个关于类固醇的日志文件,一个模型,具有如下属性:user_to_update, date_changed, notified_ok.

每次进行更改并从日志模型中检索统计信息时,您都可以触发新的日志插入。

于 2012-12-16T12:30:35.900 回答
1

您可以尝试使用 PaperTrail gem 来跟踪更改https://github.com/airblade/paper_trail

于 2012-12-16T14:54:20.743 回答