本文は、カラムの追加方法は省きます。
初期状態の devise は、サインアップ、サインイン時に「email」と「パスワード」しか受け取ることを許可されていない。なので現状では 他のカラム を作成して入力しても、データとして保存することはできない状態です。
ここで、こちらで指定したデータは保存できるよう、許可を与える必要があります。
deviseのストロングパラメータを編集する場合、ApplicationController に記述していきます。deviseのコントローラは直接修正できないため、全てのコントローラに対する処理を行える権限を持つ、ApplicationControllerに記述する必要があります。
ApplicationControllerはapp/controllersフォルダの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
以上が記述内容です。
before_action :configure_permitted_parameters, if: :devise_controller?
上記のように記述することで、devise利用の機能(ユーザ登録、ログイン認証など)が使われる前にconfigure_permitted_parametersメソッドが実行されます。
そして、
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:カラム名])
end
上記の configure_permitted_parametersメソッドでは、devise_parameter_sanitizer.permitメソッドを使うことでユーザー登録(sign_up)の際に、カラム名のデータ操作を許可しています。先ほど述べたように、これはストロングパラメータと同様の機能です。
※privateは記述をしたコントローラ内でしか参照できません。
一方、protectedは呼び出された他のコントローラからも参照することができます。
以上