Deviseの使い方まとめ

2014/02/05 11:09

Deviseの使い方をまとめてみました。
Deviseは ruby-toolbox で確認すると認証系で一番使われているRailsのライブラリです。

まずはインストール

Gemfileに追加

gem 'devise'

コマンド実行(Userモデル作成)

bundle install
rails g devise:install
rails g devise User

ルーティングを見る

routes.rbの中身を見ると下記がデフォルトで追加されているはずです。

devise_for :users

このままrake routesで確認してみます。
紙面の都合上prefixは消しています。

# ログイン画面の表示
GET    /users/sign_in(.:format)       devise/sessions#new
# ログイン処理
POST   /users/sign_in(.:format)       devise/sessions#create
# ログアウト処理
DELETE /users/sign_out(.:format)      devise/sessions#destroy
# パスワードの再発行処理
POST   /users/password(.:format)      devise/passwords#create
# パスワードの再発行画面
GET    /users/password/new(.:format)  devise/passwords#new
# パスワードの変更画面
GET    /users/password/edit(.:format) devise/passwords#edit
# パスワードの変更処理
PATCH  /users/password(.:format)      devise/passwords#update
PUT    /users/password(.:format)      devise/passwords#update
# 不明
GET    /users/cancel(.:format)        devise/registrations#cancel
# ユーザの新規登録処理
POST   /users(.:format)               devise/registrations#create
# ユーザ登録画面
GET    /users/sign_up(.:format)       devise/registrations#new
# ユーザ更新画面
GET    /users/edit(.:format)          devise/registrations#edit
# ユーザ更新処理
PATCH  /users(.:format)               devise/registrations#update
PUT    /users(.:format)               devise/registrations#update
# ユーザ削除処理
DELETE /users(.:format)               devise/registrations#destroy

テンプレートのビューを見る

下記のコマンドを実行するとユーザ登録画面やログイン画面のテンプレートが作成されます。
コマンドを実行しない場合は仮想的にテンプレートが表示されますが今回は確認も含めてコマンドを実行します。

rails g devise:views

ただ初期は素っ気ない画面なのでほとんどは修正が入ると思います。
テンプレートはapp/views/devise配下に下記の通り作成されます。

* confirmations
  - new.html.erb # パスワードの再発行画面
* mailer
  - confirmation_instructions.html.erb # 登録確認メール
  - reset_password_instructions.html.erb # パスワードのリセット確認メール
  - unlock_instructions.html.erb # パスワードロックによる確認メール
* passwords
  - new.html.erb # パスワードの再発行画面
  - edit.html.erb # パスワードの変更画面
* registrations
  - new.html.erb # ユーザ登録画面
  - edit.html.erb # ユーザ更新画面
* sessions
  - new.html.erb # ログイン画面
* shared
  - _links.erb # 各画面の共有リンク
* unlocks
  - new.html.erb # アンロック指示画面