vestal_versions
がよさげとしていましたが、どうやら今は、
paper_trail
が人気な気配です。
https://www.ruby-toolbox.com/categories/Active_Record_Versioning
にいろいろな履歴管理のものが紹介されています。
ちなみに
paper_trail
を利用するには以下のような感じです。
Gemfileに以下を追加してbundle installします。
gem 'paper_trail', '~> 2'
そして
rails g paper_trail:install --with-changes
とします。するとversionsという履歴管理用のテーブルのmigrationが作成されます。
ちなみに--with-changesとつけるとchangesetというカラムに変更された場所だけ記録することができるようになります。
そして
rake db:migrate
します。
履歴を残したいmodelに以下のようにすると履歴情報が残せるようになります。
class Blog < ActiveRecord::Base has_paper_trail end
履歴情報は以下のような感じで取得できます。
すべての変更履歴情報を取得
blog.versions
最新の変更履歴情報を取得
blog.versions.last
変更前の情報を取得
blog.versions.last.reify
変更した部分だけの情報の取得
blog.versions.last.changeset
これで
{'article' => ['変更前', '変更後']}
みたいな形で取得できます。
結構他にもいろいろなことができそうです。
詳しくは以下を見てみてください。
https://github.com/airblade/paper_trail
0 件のコメント:
コメントを投稿