記事概要
Ruby on Railsのdevise(Gem)について、まとめる
前提
- Ruby on Railsでアプリケーションを作成している
deviseとは
ユーザー管理機能を簡単に実装するためのGem
ビューファイル
deviseに用意されたビューファイルは、編集できない
編集したい場合は、app/views
配下にビューファイルをコピーする
コントローラー
deviseに用意されたコントローラーは、編集できない
devise_parameter_sanitizer
メソッドを使用することで、パラメーターの取得を可能にする
usersコントローラーを作成することで、マイページなどを作成することが可能になる
※usersコントローラーはdeviseに用意されたコントローラーではないため、編集できる
自動設定されるバリデーション
自動設定されている制約 | |
---|---|
・存在すること ・一意であること ・@を含むこと |
|
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の記述
手順(基本設定)
- deviseの設定ファイルを作成するため、下記コマンドを実行する
% rails g devise:install
手順(モデル作成)
- Userモデルを作成するため、下記コマンドを実行する
% rails g devise user
- routes.rbに、下記ルーティングが自動的に追記されたことを確認する
Rails.application.routes.draw do devise_for :users # 省略 end
devise_for
は、ユーザー機能に必要な複数のルーティングを一度に生成してくれるdeviseのメソッド
手順(テーブル作成)
-
db/migrate/yyyymmddhhmmss_devise_create_users.rb
が作成されていることを確認する - メールアドレス・パスワードなどの基本的な項目は、既にカラムが用意されていることを確認する
- テーブルを編集し、マイグレーションを実行する
こちらを参照する - サインアップ画面やサインイン画面などが、自動生成される
手順(ビューファイル作成)
- ビューファイルを編集するため、deviseに用意されたビューファイルをコピーして
app/views
の配下に配置する% rails g devise:views
-
app/view/device
配下にビューファイルが生成される画面 ビューファイル サインアップ画面 app/views/devise/registrations/new.html.erb サインイン画面 app/views/devise/sessions/new.html.erb
手順(ストロングパラメーター追加)
-
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
手順(コントローラー作成)
- usersコントローラーを作成するため、下記コマンドを実行する
% rails g controller users
-
app/controllers/users_controller.rb
が作成されたことを確認する
手順(Gemの削除)
- マイグレーションファイルのロールバックを行う
- ビューファイルの削除を行う
# アプリのディレクトリに移動 % cd ~/[アプリのディレクトリ] # app/view/device配下にviewファイルが削除される ※フォルダは削除されない % rails d devise:views
- モデルの削除を行う
# マイグレーションファイルとUserモデルのファイルが削除される % rails d devise user
- deviceの設定ファイルを削除し、device導入前に戻す
# deviseの設定ファイルを削除 % rails d devise:install
Ruby on Railsまとめ