0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【devise】新規登録でカラムを増やすには

Posted at

本文は、カラムの追加方法は省きます。

初期状態の devise は、サインアップ、サインイン時に「email」と「パスワード」しか受け取ることを許可されていない。なので現状では 他のカラム を作成して入力しても、データとして保存することはできない状態です。

ここで、こちらで指定したデータは保存できるよう、許可を与える必要があります。
deviseのストロングパラメータを編集する場合、ApplicationController に記述していきます。deviseのコントローラは直接修正できないため、全てのコントローラに対する処理を行える権限を持つ、ApplicationControllerに記述する必要があります。

ApplicationControllerはapp/controllersフォルダのapplication_controller.rbファイルにあります。ひとまず、以下のように記述を追加していく。

application_controller.rb
class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:カラム名])
  end
end

以上が記述内容です。

application_controller.rb
before_action :configure_permitted_parameters, if: :devise_controller?

上記のように記述することで、devise利用の機能(ユーザ登録、ログイン認証など)が使われる前にconfigure_permitted_parametersメソッドが実行されます。

そして、

application_controller.rb
def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:カラム名])
end

上記の configure_permitted_parametersメソッドでは、devise_parameter_sanitizer.permitメソッドを使うことでユーザー登録(sign_up)の際に、カラム名のデータ操作を許可しています。先ほど述べたように、これはストロングパラメータと同様の機能です。

※privateは記述をしたコントローラ内でしか参照できません。
一方、protectedは呼び出された他のコントローラからも参照することができます。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?