Deviseの設定手順をまとめてみた。 その2 ViewとControllerのカスタマイズ編

  • 16
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

--- 全体の流れ ---
その1 導入編
その2 ViewとControllerのカスタマイズ編 ←今ココ
その3 Deviseの日本語化編
その4 ユーザーIDで、ログイン認証編

実運用では、カスタマイズが必須だよねーってことで、
今回は、ログイン画面やサインイン画面をカスタマイズしよーって話。

1. deviseのViewをカスタマイズ

  • 前回、ユーザー管理用のテーブルとして、usersテーブルを作ってたので、以下のコマンドを実行
$ rails g devise:views users
      invoke  Devise::Generators::SharedViewsGenerator
      create    app/views/users/shared
      create    app/views/users/shared/_links.html.erb
      invoke  form_for
      create    app/views/users/confirmations
      create    app/views/users/confirmations/new.html.erb
      create    app/views/users/passwords
      create    app/views/users/passwords/edit.html.erb
      create    app/views/users/passwords/new.html.erb
      create    app/views/users/registrations
      create    app/views/users/registrations/edit.html.erb
      create    app/views/users/registrations/new.html.erb
      create    app/views/users/sessions
      create    app/views/users/sessions/new.html.erb
      create    app/views/users/unlocks
      create    app/views/users/unlocks/new.html.erb
      invoke  erb
      create    app/views/users/mailer
      create    app/views/users/mailer/confirmation_instructions.html.erb
      create    app/views/users/mailer/reset_password_instructions.html.erb
      create    app/views/users/mailer/unlock_instructions.html.erb

2. deviseのControllerをカスタマイズ

  • ここも、usersテーブルに合わせて、コントローラーを作成
$ rails g devise:controllers users
      create  app/controllers/users/confirmations_controller.rb
      create  app/controllers/users/passwords_controller.rb
      create  app/controllers/users/registrations_controller.rb
      create  app/controllers/users/sessions_controller.rb
      create  app/controllers/users/unlocks_controller.rb
      create  app/controllers/users/omniauth_callbacks_controller.rb
====================================================================

Some setup you must do manually if you haven't yet:

  Ensure you have overridden routes for generated controllers in your route.rb.
  For example:

    Rails.application.routes.draw do
      devise_for :users, controllers: {
        sessions: 'sessions'
      }
    end

====================================================================
  • 使用するコントローラーで、コメントになっているところを外す

  • ざっくり、よく使うControllerについて説明すると...

    1. confirmations_controller.rb: ユーザー登録確認メール内のリンクを押下時
    2. passwords_controller.rb: パスワードを忘れた方は。。。の場合
    3. registrations_controller.rb:ユーザー登録時
    4. sessions_controller.rb : ログイン時

3. ルーティング

  • 実は、ここがキモ!!

  • config/routes.rbに、以下の内容を記述

  devise_for :users, :controllers => {
    :registrations => 'users/registrations',
    :sessions => 'users/sessions'   
  } 

  devise_scope :user do
    get "sign_in", :to => "users/sessions#new"
    get "sign_out", :to => "users/sessions#destroy" 
  end

4. Railsを再起動して、確認。

$ rails s
  • どっすかー?ちゃんとできましたかー?

※ITBOZEによるIT技術の備忘録ブログ
坊主が上手にHatenaに坊主のコードを書いた
もよろしくね!