--- 全体の流れ ---
その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について説明すると...
- confirmations_controller.rb: ユーザー登録確認メール内のリンクを押下時
- passwords_controller.rb: パスワードを忘れた方は。。。の場合
- registrations_controller.rb:ユーザー登録時
- 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
- ちゃんとできましたか?