簡単な問題があります。1:N のイベントを持つカレンダーを想像してください。ある時点で、2 つのタイムスタンプ間で何が変更されたかを知りたいと思います。
- どのイベントが作成、更新、または破棄されましたか?
- 最初のタイムスタンプの後に作成され、2 番目のタイムスタンプの前に破棄されたイベントについて知る必要はありません。
私は 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 は、この投稿を読んだ後、「ソフト削除」を提案しました。私は自分のモデルを再考することにしました。意味:イベントにユーザーが割り当てられている場合、イベントを「キャンセル」(削除ではなく) する必要があります。関連付けがない場合は、イベントを安全に破棄できます。