paper_trailはActiveRecordの編集差分を取ってくれるgemです。
railsのみならず、sinatraでも活用できます。
使い方
例の如くscaffoldで叩き台を生成します。
$ rails new PaperTrailTest $ rails g scaffold Blog name:string user_id:integer
Gemfileに追記
gem 'paper_trail', '~> 3.0.0'
必要なgemを投入後、paper_tailのmodelを突っ込みます。
$ bundle install $ bundle exec rails generate paper_trail:install
viewフォルダに_editlig.html.erbというファイルを用意し、
次のように書きます。
<hr> <h1>Edit Log</h1> <hr> <h2>Events</h2> <p>HowManyLogs ::<%= @blog.versions.size %></p> <p>EventType ::<%= @blog.versions.last.event %></p> <h2>Details</h2> <% if prv = @blog.previous_version %> <p>PreviousName ::<%= prv.name %></p> <p>PreviousUserID ::<%= prv.user_id %></p> <% else %> NONE <% end %> <hr>
これを必要な部分で呼び出します。
<%= render 'editlog' %>
結果
起動します。エイリアスを貼っているのでコマンドで一発。
$ rails-dev-go
項目生成直後にshowすると、次のような絵がでます。
これをeditでアップデートすると、detailに以前の内容が反映されます。