RailsにDeviseを導入する方法(学習記録)
1: Gemのインストール
まずdeviseというGemをインストールします
# Gemfile
# 追記
gem 'devise
# Gemのインストール
% bundle install
2: rails g devise:installコマンドの実装
# deviseの設定ファイルを作成
% rails g devise:install
3: rails g deviseコマンドでdeviseに管理させたいモデルを生成
# deviseコマンドでUserモデルを作成
% rails g devise user
# マイグレーションファイルも自動生成される
4: マイグレーションの実行
# マイグレーションを実行
% rails db:migrate
5: deviseのビューを作成
※ deviseでログイン機能を実装すると、ログイン/サインアップ画面が自動的に生成されますがビューファイルとしては生成されません。これは、deviseのGem内に存在するビューファイルを読み込んでいるためです。deviseのビューファイルに変更を加えるためには、deviseのコマンドを利用して、ビューファイルを生成する必要があります。
% rails g devise:views
# 生成されたビューファイルを独自に編集
5: カラムの追加
※ 現在、サインアップ時に登録する情報はメールアドレスとパスワードの2つです。これに加えて名前を登録できるようにしましょう。
テーブルにカラムを追加するために、マイグレーションを生成する必要があります。
1.rails g migrationコマンド
マイグレーションを生成するコマンドです。
マイグレーションはこれまで、rails g modelコマンドでモデルと一緒に生成されていましたが、すでに作成されたテーブルの内容を変更する際などに使用します。
2.usersテーブルにnameカラムをstring型で追加
# usersテーブルにnicknameカラムをstring型で追加するマイグレーションファイルを作成
% rails g migration AddNameToUsers name:string
# 作成したマイグレーションを実行
% rails db:migrate
3.ストロングパラメーターを使えるようにする
※ サインアップ時に入力する情報はパラメーターとしてサーバーに送信されます。deviseを使わない通常のリクエストの場合は、コントローラーにストロングパラメーターを記述し、受け取れるパラメーターを制限していました。deviseに関しても、同様にストロングパラメーターをコントローラーに記述します。しかし、deviseの処理を行うコントローラーはGem内に記述されているため、編集することができません。
4.devise_parameter_sanitizerメソッド
deviseにおけるparamsのようなメソッドです。deviseのUserモデルに関わる「ログイン」「新規登録」などのリクエストからパラメーターを取得できます
# application_controller.rbを編集
# sign_up(新規登録の処理)に対して
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end
以上がユーザー管理機能をDeviseを使って実装する方法です!参考までにどうぞ!!