導入手順
- Gemfileにライブラリのインストール
- deviseの設定ファイルのインストール
- モデルの作成
- テーブルの作成
- deviseのviewの作成
6. ストロングパラメーターについて
1. Gemfileにライブラリのインストール
gemfileに以下を追加する。
gem 'devise'
ターミナルで自分のアプリケーションのディレクトリで以下を実行する。
bundle install
2. deviseの設定ファイルのインストール
ターミナルで以下を実行する。
rails g devise:install
3. モデルの作成
ターミナルで以下を実行する。
rails g devise モデル名
ルーティングが自動追加される。
Rails.application.routes.draw do
devise_for :モデル名s
end
4. テーブルの作成
モデルを作成するとマイグレーションファイルが作成されている
必要なテーブルを追加する。
class DeviseCreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :モデル名s do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
t.string :name, null: false
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
# 省略
t.timestamps null: false
end
add_index :モデル名s, :email, unique: true
add_index :モデル名s, :reset_password_token, unique: true
# add_index :モデル名s, :confirmation_token, unique: true
# add_index :モデル名s, :unlock_token, unique: true
end
end
※例として、name, null: falseは追加しました。
テーブルの内容を追加して以下を実行する。
rails db:migrate
5.deviseのviewの作成
ターミナルで以下を実行する。
rails g devise:views
app/views
配下にdevise専用のviewを配置する。
6.deviseのストロングパラメーターについて
viewでサインアップ時に入力した内容はパラメーターとしてサーバーに送信される。
deviseを使用しない通常のリクエストは、悪意のあるパラメータを受け取らないように、コントローラーにストロングパラメーターを記述し、受け取るパラメーターを制限している。deviseも同様だが、gem内にコントローラーが記述されているため、コントローラーの編集ができないようになっている。
deviseでは、application_controller.rb
にdevise_parameter_sanitizerメソッド
を利用してパラメーターを受け取ることができるようになる。
application_controller.rb
は全てのコントローラーが継承しているファイルのことで、通常のコントローラーに加えて、deviseのコントローラーも継承している。
deviseのコントローラーはgem内に記述してあるため編集ができないが、application_controller.rb
に処理を記述することでパラメーターを読み込ませることができるようになる。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:パラメーター名])
end
end
if: :devise_controller?の部分はdeviseの処理(sign_up, sign_in, :account_update)
のみを判断し処理を実行する。