Ruby on Rails4でdevise 1:導入

deviseを導入してみます。

Deviseのインストール

Gemfileの修正

gem 'devise'

Deviseをインストールするため以下のコマンドを実行

# Deviseのインストール
bundle install --path vendor/bundle
bundle exec rails generate devise:install

# Devise用のModel作成
bundle exec rails generate devise User

# Devise用のview生成(なければデフォルトを使用する)
bundle exec rails generate devise:views users

Devise用のリンク追加

app/views/layouts/application.html.erbを修正

<%= render 'layouts/navigation' %>

app/views/layouts/_navigation.html.erbを作成

<ul class="nav">
  <li><%= link_to 'Home', root_path %></li>
<% if user_signed_in? %>
  <li><%= link_to 'Logout', destroy_user_session_path, :method=>'delete' %></li>
<% else %>
  <li><%= link_to 'Login', new_user_session_path %></li>
<% end %>
<% if user_signed_in? %>
  <li><%= link_to 'Edit account', edit_user_registration_path %></li>
<% else %>
  <li><%= link_to 'Sign up', new_user_registration_path %></li>
<% end %>
</ul>

機能制御

ひとまずログインできなかったら使えないようにする。 例えばbookのコントローラーに制御を入れる場合、1行追加すればOK。 app/controllers/books_controller.rbを修正。

 class BooksController < ApplicationController
   before_action :set_book, only: [:show, :edit, :update, :destroy]
+  before_filter :authenticate_user!