12
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rails】コピペで使えるdevise備忘録

Last updated at Posted at 2019-05-23

はじめに

deviseでユーザーログイン機能を追加するにあたって、普段よく使っているものの備忘録です。

rootをログイン画面に設定

deviseのcontrollerを作成し、routes.rbで以下のように設定。

$ rails g devise:controllers users
routes.rb
Rails.application.routes.draw do

   # rootをログイン画面に設定
  devise_scope :user do
    root "users/sessions#new"
  end

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

ログイン後のpathを指定

application_controller.rbで以下を記載。

application_controller.rb
class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    tasks_path
  end

このようにログイン後最初のページを条件分岐させることも可能です↓

application_controller.rb
class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    if admin_user?
      users_path
    else
      tasks_path
    end
  end

ストロングパラメーターのpermit

deviseではサインアップ時にemailpassword系のみを受け取るようにストロングパラメーターが設けられている。
それ以外の :name などを許可したい場合、permitを設ける必要がある↓

application_controller.rb
class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

.
.
.


  private

  def configure_permitted_parameters
    added_attrs = [ :name,
                    :email,
                    :password,
                    :password_confirmation,
                  ]
    devise_parameter_sanitizer.permit :sign_up, keys: added_attrs
    devise_parameter_sanitizer.permit :account_update, keys: added_attrs
    devise_parameter_sanitizer.permit :sign_in, keys: added_attrs
  end

複数のモデルをdeviseに適用

例えば、creatorclientという2種類のModelでdeviseによるログイン機能を適用させたい場合、

rails g devise creator
rails g devise client

してあげてmigration

rails db:migrate

するだけでOK.

ヘルパーメソッド

そしてdeviseが提供しているヘルパーメソッドに関しては、userという文字列をそれぞれcreatorやclientに変更すれば利用できる。
(↓こんな感じ)

user creator client
before_action :authenticate_user! before_action :authenticate_creator! before_action :authenticate_client!
user_signed_in? creator_signed_in? client_signed_in?
current_user current_creator current_client
user_session creator_session client_session

詳細はこちらを参照→https://github.com/plataformatec/devise/wiki/How-to-Setup-Multiple-Devise-User-Models
https://qiita.com/tobita0000/items/866de191635e6d74e392

おわり

他にも備忘録しておきたい事ありそうなので、思い出し次第追加したい。

12
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?