現在取り組んでいるプロジェクトでは、オブジェクトのバージョン管理を実装する必要があります。残念ながら、各オブジェクトの完全な履歴を保持する必要があるため、Papertrail のような単一のテーブル ソリューションはすぐに管理できなくなります。私が気に入っている Papertrail の機能がありますが、モデルごとに個別のテーブル (acts_as_versioned など) を使用したソリューションでは見つけることができませんでした。
- コントローラーとモデルの両方からのメタ情報を保存する機能
- データはシリアル化されるため、スキーマの変更によってバージョン テーブルが変更されることはありません
- バージョンをトラバースするための強力な方法
- 変更責任の自動追跡
また、Papertrail にはないボーナスとなる機能もいくつかあります。
- 組み込みのバージョン差分サポート
- フルバージョンではなく差分
現在、モデルごとに個別のテーブルを使用するように Papertrail をフォークすることを検討していますが、既存のソリューションがあればその労力を節約したいと考えています。
更新: Vestal Versions はデフォルトで 1 つのテーブルを使用しますが、モデルごとにカスタム バージョン クラスを提供し、ActiveRecord の「set_table_name」メソッドを使用することで、モデルごとに個別のテーブルを作成することができました。Vestal Versions には diff サポートも組み込まれていますが、そのインターフェイスは Papertrails ほど強力ではありません。また、協会のサポートもありません。
更新 2: papertrail はより活発なプロジェクトであるように思われるため、gem をフォークし、vestal バージョンと同様のカスタム クラス サポートを追加しました。これにより、モデルごとに個別のテーブルを定義できるようになりました。私のフォークはここにありますが、すぐにメインのプロジェクト リポジトリに取り込まれることを願っています。 https://github.com/benzittlau/paper_trail