MyFirstRails

PaperTrailでの差分管理サンプル

概要

Railsに初めて触れる方を対象にしたチュートリアルです

paper_trailを使用して投稿内容の差分管理を行うサンプルアプリを作成するチュートリアルです

チュートリアル

Railsのひな型を作る

まず、rails newを実行し、Railsアプリのひな型を作成します

rails new papertrail

次に、作成したRailsアプリのディレクトリへと移動します

cd papertrail

SQLite3のバージョン修正

先ほどのrails newsqlite3のインストールがエラーになっている場合は、以下のようにバージョンを指定してください

gem 'sqlite3', '1.3.13'

その後、bundle installを実行します

bundle install

ScaffoldでCRUDを作成

rails new scaffoldコマンドを使用し、CRUDを作成します

rails scaffold post title:string content:text

その後、rails db:migrateでマイグレーションを実行します

rails db:migrate

PaperTrailの導入

まずは、Gemfilegem 'papaer_trail'を追加します

gem 'papaer_trail'

その後、bundle installを実行します

bundle install

次に、app/models/post.rbを以下のように変更します

class Post < ApplicationRecord
    has_paper_trail
end

次に、app/controllers/posts_controller.rbshowアクションに以下のコードを追加します

@pre_post = @post.paper_trail.previous_version

最後に、app/views/posts/show.html.erbに以下のコードを追加すればOkです!

<p>
  <strong>Pre Content:</strong>
  <%= @pre_post.content %>
</p>

これで、新しく作ったcontentの内容とその一つまえのcontentの内容が表示されます!