背景
Railsでdeviseを使用してユーザー認証をするときにemailの代わりにnameを使用する。
その変更の過程で Unpermitted parameter: :name
が発生して解決するのが大変だったので解決のメモ。
emailをnameに変更する
設定
config/initializers/devise.rbの以下の三箇所を:nameに変更する。
config.authentication_keys = [:name]
config.case_insensitive_keys = [:name]
config.strip_whitespace_keys = [:name]
controller
rails g devise:controllers users でコントローラを作成する。
app/controllers/users/registrations_controller.rbで以下のように変更する。:nameをパラメータとして許可する。
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
protected
# If you have extra params to permit, append them to the sanitizer.
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end
view
rails g devise:views users でビューを作成する。
formのfieldのemailの箇所をnameに変更する。
つまったところ
Unpermitted parameter: :name が解決できない
コントローラを変更して:nameパラメータを許可してもこのエラーが出る。
devise.rbを以下のように変更するとエラーが出なくなった。
config.case_insensitive_keys = [:name]
config.strip_whitespace_keys = [:name]
Comments