讃岐小僧のEngineering×Techメモ

プログラミングや、趣味の野球、資産運用について、その他、ビジネスやテクノロジーをテーマに様々なことをつぶやく場所です。

【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