我有一个简单的问题:想象一个包含 1:N 事件的日历。在某些时候,我想知道两个时间戳之间发生了什么变化。
- 创建、更新或销毁了哪些事件?
- 我不需要知道在第一个时间戳之后创建并在第二个时间戳之前销毁的事件。
我尝试了papertrail,但在我看来应该有一种更简单的方法来做到这一点。
简单吧?:)
更新:获取创建和更新的记录:
Calendar.last.events.where("created_at >= :timestamp OR updated_at >= :timestamp", {timestamp: timestamp})
更新:通过 papertrail 获取被破坏的记录:
PaperTrail::EventVersions.where("created_at >= :timestamp", { timestamp: DateTime.now}).where(calendar_id: calendar.id, event: "destroy")
注意:您需要向(自定义)版本模型添加元数据引用。
更新: @ck3g 在阅读这篇文章 后建议“软删除” 。我决定重新考虑我的模型。含义:如果一个事件有分配给它的用户,我必须“取消”(而不是删除)该事件。如果它没有关联,我可以安全地销毁该事件。