给定时间戳上多个活动记录对象之间的差异

时间:2012-05-12 10:47:14

标签: ruby-on-rails-3 activerecord

我有一个简单的问题:设想一个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")

注意:您需要向(自定义)版本模型添加元数据引用。

更新 在阅读此post后,@ ck3g建议"软删除"。我决定重新考虑我的模特。含义:如果事件分配了一个用户,我必须"取消" (不删除)事件。如果它没有关联,我可以安全地破坏事件。

1 个答案:

答案 0 :(得分:0)

我认为您应该执行某种软删除(存档)记录。您可以在网络上找到一堆实现。稍后您可以按deleted_at找到记录。