データベースにある取引の変更を表示するサイトを構築しています。例えば、商談のステータスが保留から成約に変わったら表示したいし、値が上がったり下がったりしたら表示したい、みたいな。また、概要ページを開くと、変更履歴が表示されるようにしたいです。したがって、過去を確認できるようにするには、何らかの変更ログが必要です。どうすればいいですか?
Railsプロジェクトですが、関係ないと思います。
データベースにある取引の変更を表示するサイトを構築しています。例えば、商談のステータスが保留から成約に変わったら表示したいし、値が上がったり下がったりしたら表示したい、みたいな。また、概要ページを開くと、変更履歴が表示されるようにしたいです。したがって、過去を確認できるようにするには、何らかの変更ログが必要です。どうすればいいですか?
Railsプロジェクトですが、関係ないと思います。
この問題に対する一般的な解決策はないと思います。
自分でロールアウトできます。変更ログが必要なすべてのオブジェクトを検討することから始めます。何種類ありますか?どのくらいの頻度で変更が発生すると予想されますか? これは、対処する必要がある潜在的な変更スループットの数を見積もるのに役立ちます。あまり多くない場合は、データベースに貼り付けてください。大量に生成している場合は、カンマ区切りファイルに保存してみてください。
以前にも同様のシステムを実装したことがあります。1) プロパティ値の変更、2) リストへの値の追加、3) リストからの値の削除の 3 種類の変更がありました。
ログファイルに保存された次の形式を使用しました。
//For type 1)
1,2011/01/01 00:00:00,MyObject,myProperty,oldValue,newValue
//For type 2)
2,2011/01/01 00:00:00,MyObject,myListProperty,addedValue
//For type 3)
3,2011/01/01 00:00:00,MyObject,myListProperty,removedValue
これにより、必要なほとんどの情報が取得されました。これらのvalue
部分は、変更/追加/削除されたプロパティ値のユーザーが読める要約にすぎません。
Rails を使用しているので、PaperTrail gemを見てください。それはあなたが探しているものを正確に実行し、美しく構築されています. 変更が発生したことを概要ページが認識できるように、コールバックを追加するだけです。ただし、モデルの履歴については、組み込みの PaperTrail 機能を使用してください。