【Rails】deviseを利用したユーザ管理の実装(自分用メモ)

deviseメモ

deviseとはアプリケーションのログイン・ログアウト等、またユーザの作成や更新を簡易に実装できるようにしてくれる便利なgem。

ただ用法をすぐに忘れるので、ここに今回作業した内容をメモしておく。

deviseをインストールする

rails g devise:install

deviseを実装するモデルを作成する

rails g devise user

deviseで使用するモデルは、rails g devise <モデル名>コマンドで作成する。(今回はUserを利用する。)

マイグレーションファイルを編集する

class DeviseCreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
## Database authenticatable
t.string :name,               null: false, unique: true
t.string :email,              null: false, default: ""
t.string :encrypted_password, null: false, default: ""
~~省略~~

マイグレーションを実行する

bundle exec rake db:migrate

deviseのビューファイルを追加する

rails g devise:views

未ログインユーザーの操作を防ぐための処理を追記

作業ファイル:application_controller.rb

before_action :authenticate_user!

ユーザー登録時に名前(nameカラム)も登録できるようにする

作業ファイル:application_controller.rb

class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :authenticate_user!
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end

ポイントは2点

  • deviseでは初期状態でサインアップ時にメールアドレスとパスワードのみを受け取るようにストロングパラメーターが設定されている。しかし追加したキーのパラメーターは許可されていない。

  • 追加のパラメーターを許可したい場合は、application_controller.rbにおいてbefore_actionにconfigure_permitted_parametersメソッドを設定する。

関連リンクを貼っておきます

github.com

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です