10
5

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 3 years have passed since last update.

devise_token_authで「Unpermitted parameters: :format, :registration」が出た時の対処法

Last updated at Posted at 2021-02-12

はじめに

Rails6+vue.jsでSPAを作成しており、ログイン周りでdevise_token_authを使うことにした。

色々な記事を参考にdevise_token_authを追加し、各種設定をして新規登録のテストをしたら下記のエラーを吐いた。

web_1  | Unpermitted parameters: :format, :registration
web_1  | Unpermitted parameters: :format, :registration
web_1  | Unpermitted parameters: :format, :registration

このエラーが出ても処理自体は行えるので実装上は問題ないけど、エラーがあるのは良くないので解決することに。そしたらめっちゃくちゃハマったので備忘録として残しておく。

解決策

devise_token_auth用に作成したcontrollerのストロングパラメータの記述を修正することで解決した。

・エラー吐いてたもともとのやつ

api/auth/registrations_controller.rb
class Api::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController
  private

  def sign_up_params
    params.permit(:name, :email, :password, :password_confirmation)
  end

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

・修正してエラーを吐かなくなったやつ

api/auth/registrations_controller.rb
class Api::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController
  private

  def sign_up_params
    # require(:registration)を追加
    params.require(:registration).permit(:name, :email, :password, :password_confirmation)
  end

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

ストロングパラメータ関連のエラーだと分かってたけど、参考にしたサイトはどれもrequire(:registration)を省いて書いてたから、この記述でも問題ないと思って他のところを調べてて解決するまでめちゃくちゃ時間かかった。

ちなみに継承元のdevise_token_authでも同じようにストロングパラメータが定義されてたし何でエラーが発生してたかは分からない。

devise_token_auth/app/controllers/devise_token_auth/registrations_controller.rb
def sign_up_params
    params.permit(*params_for_resource(:sign_up))
end
10
5
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
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?