0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】devise(Gem)について

Last updated at Posted at 2025-04-28

記事概要

Ruby on Railsのdevise(Gem)について、まとめる

前提

  • Ruby on Railsでアプリケーションを作成している

deviseとは

ユーザー管理機能を簡単に実装するためのGem

ビューファイル

deviseに用意されたビューファイルは、編集できない
編集したい場合は、app/views配下にビューファイルをコピーする

コントローラー

deviseに用意されたコントローラーは、編集できない
devise_parameter_sanitizerメソッドを使用することで、パラメーターの取得を可能にする

usersコントローラーを作成することで、マイページなどを作成することが可能になる
※usersコントローラーはdeviseに用意されたコントローラーではないため、編集できる

自動設定されるバリデーション

自動設定されている制約
email ・存在すること
・一意であること
・@を含むこと
password ・存在すること
・6文字以上であること
・128文字以下であること
・password_confirmation項目と値が一致すること

メソッド

devise_parameter_sanitizerメソッド

deviseのUserモデルに関わる「ログイン」「新規登録」などのリクエストからパラメーターを取得でき、paramsのようなメソッド

permitメソッドと組み合わせることにより、deviseに定義されているストロングパラメーターに対して、自分で新しく追加したカラムも指定して含められる

メソッド名は、configure_permitted_parametersを使用することが多い

private
def configure_permitted_parameters
  # deviseのUserモデルに追加のパラメーターを許可
  devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー])
end
  • permitメソッドの第一引数
    処理名 役割
    :sign_in サインイン(ログイン)の処理を行うとき
    :sign_up サインアップ(新規登録)の処理を行うとき
    :account_update アカウント情報更新の処理を行うとき
  • permitメソッドの第二引数
    配列でキー(各フォーム部品のname属性値)を指定する
    指定された名前と同じキーを持つパラメーターの取得を許可する

user_signed_in?メソッド

ログインしているかを判定するメソッド

# ログインしているユーザーのとき
user_signed_in?
#=> true

# ログインしていないユーザーのとき
user_signed_in?
#=> false

current_userメソッド

現在ログインしているユーザーの情報を取得できるメソッド

current_user.id
#=> 現在ログインしているユーザーのID

authenticate_user!メソッド

ログイン状態によって表示するページを切り替えるdeviseのメソッド

authenticate_user!メソッドが呼ばれた段階で、ユーザーが未ログインだとログイン画面に遷移させる

# 基本的には、beforeアクションと併せて利用する
before_action :authenticate_user!

Gemのインストール手順

Gemfileの記述

手順(基本設定)

  1. deviseの設定ファイルを作成するため、下記コマンドを実行する
    % rails g devise:install
    

手順(モデル作成)

  1. Userモデルを作成するため、下記コマンドを実行する
    % rails g devise user
    
  2. routes.rbに、下記ルーティングが自動的に追記されたことを確認する
    Rails.application.routes.draw do
      devise_for :users
      # 省略
    end
    
    devise_forは、ユーザー機能に必要な複数のルーティングを一度に生成してくれるdeviseのメソッド

手順(テーブル作成)

  1. db/migrate/yyyymmddhhmmss_devise_create_users.rbが作成されていることを確認する
  2. メールアドレス・パスワードなどの基本的な項目は、既にカラムが用意されていることを確認する
  3. テーブルを編集し、マイグレーションを実行する
    こちらを参照する
  4. サインアップ画面サインイン画面などが、自動生成される

手順(ビューファイル作成)

  1. ビューファイルを編集するため、deviseに用意されたビューファイルをコピーしてapp/viewsの配下に配置する
    % rails g devise:views
    
  2. app/view/device配下にビューファイルが生成される
    画面 ビューファイル
    サインアップ画面 app/views/devise/registrations/new.html.erb
    サインイン画面 app/views/devise/sessions/new.html.erb

手順(ストロングパラメーター追加)

  1. application_controller.rbに、devise_parameter_sanitizerメソッドを追加する
    class ApplicationController < ActionController::Base
      # devise_controller = Gemのdeviseに関するコントローラー(VSCodeで目視できないが、devise_controller.rbみたいなコントローラーが複数ある)の処理
      # deviseに関するコントローラーで処理を行う場合、メソッド[configure_permitted_parameters]を事前実行する
      before_action :configure_permitted_parameters, if: :devise_controller?
    
      # 省略
    
      private
      def configure_permitted_parameters
        # 指定した処理を実行する場合、指定したキーはパラメーターとして使用できる
        devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー])
      end
    end
    

手順(コントローラー作成)

  1. usersコントローラーを作成するため、下記コマンドを実行する
    % rails g controller users
    
  2. app/controllers/users_controller.rbが作成されたことを確認する

手順(Gemの削除)

  1. マイグレーションファイルのロールバックを行う
  2. ビューファイルの削除を行う
    # アプリのディレクトリに移動
    % cd ~/[アプリのディレクトリ]
    
    # app/view/device配下にviewファイルが削除される ※フォルダは削除されない
    % rails d devise:views
    
  3. モデルの削除を行う
    # マイグレーションファイルとUserモデルのファイルが削除される
    % rails d devise user
    
  4. deviceの設定ファイルを削除し、device導入前に戻す
    # deviseの設定ファイルを削除
    % rails d devise:install
    

Ruby on Railsまとめ

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?