【Rails】devise_token_authで新規ユーザー登録時にUnpermitted parameters: が出たときの対処法


はじめに

gem devise_token_authを使っていて、新規ユーザー登録時に以下エラーが出たときの対処法を残します。

Unpermitted parameters: 保存されて欲しいカラム名

自分でUserテーブルにカラムを追加して、保存しようとしたら
発生する内容です。

今回、自分の場合は:age:genderを追加しようとしたところ発生しました。(以下参照)

Unpermitted parameters: :age, :gender

これを解決していきます。

環境

OS: macOS Catalina 10.15.1
zsh: 5.7.1
Ruby: 2.6.5
Rails: 6.0.2.1

結論:registrations_controllerに追記

registrations_controller
class Api::V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController

  private

  def sign_up_params
    # ここに :age, :genderを追記
    params.permit(:name, :email, :age, :gender, :password, :password_confirmation)
  end

  def account_update_params
    params.permit(:name, :email)
  end
end

※反映するにはrails server再起動が必要です。

理由

Strong Parameterではじかれてしまっているのが問題でした。

sign_up_paramsの中に追記することで、新規ユーザー登録のときだけ許可されるようになります。

こいつも許可してあげてよ!という指定をすればOKですね。

おわりに

最後まで読んで頂きありがとうございました

どなたかの参考になれば幸いです