NHibernateでは、同じテーブルを使用するバージョンを操作し、そのテーブルにバージョン番号の列を追加するだけで済みます。こちらを参照してください。パフォーマンス上の重大な理由から、そのロジックをコレクションテーブルではなく同じテーブルに含める必要があります。Railsにそのようなものはありますか、それとも自分でロールする必要がありますか?
私はaudited、vestal_versions、paper_trailなどの利用可能なすべてのオプションを調べましたが、それらすべてに失望していると言わなければなりません。それらは正しい方法を使用するのが面倒であるだけでなく、パフォーマンスのボトルネックでもあります。paper_trailのバージョンを復元するには、データベースに対して3つのクエリを実行して、復元するデータをフェッチしてから、別のクエリを実行して更新する必要があります。