関連付けられたモデルがたくさんあるクラスの質問があります。私のアプリの1ページに、現在のすべての質問の概要と、関連するレコードからのさまざまな情報を一覧表示します。最終的に、これは値のハッシュであり、それをcsvスタイルの行に出力します(これ以降、これを「行ハッシュ」と呼びます)
現在、特定の期間における質問(または関連データ)の変更のみを表示する必要があります。私は現在、これを行うための最良の方法を検討しています。これまでに私が持っていたいくつかのアイデアがあります。フィードバック、考え、提案などを歓迎します。
1)アプローチ1-acts_as_auditedこれは、他のアプリで以前に使用したことがあるので、私の最初の考えでした。ただし、aaaの問題は、レコードのデータへの変更のみを追跡することです(つまり、関連付けが変更されてもかまいません)。したがって、関連するすべてのレコードを監査することもできますが、異なる監査レコードを結び付けることによって変更されたものをつなぎ合わせようとすると、悪夢のように聞こえます。
2)古いハッシュと新しいハッシュをシリアル化されたフィールドに保存します。つまり、誰かが質問/編集ページに移動すると、現在の行ハッシュを計算して、質問テーブルのシリアル化されたフィールド「old_data」に保存します。次に、質問を保存した後、新しい現在の行のハッシュを計算し、質問テーブルのシリアル化されたフィールド「new_data」に保存します。また、2つのシリアル化されたハッシュを比較し、その違いを別のシリアル化されたハッシュフィールド「変更」に保存します。レポートを作成するために、過去x日間に更新された質問を探し、その変更データを出力します。
3)ビューを作成します-出力したいデータに対応するビューを作成します(つまり、レポートに取り込むすべてのデータを統合します)。次に、ビューへの変更を追跡します-どういうわけか。どれだけ正確にそれをするのかわかりません。
私は今、オプション2に傾いています。
他の考え/コメントはありますか?任意の提案に感謝します-最大。