はじめに
React、Rails APIでSPAを開発しているのですが、標記エラーに遭遇しました。
忘備録として、また同じエラーに遭遇した人に向けて、記事として残そうと思います。
エラー
ログイン機能を実装するためにdevise_token_authを使っているのですが、実装後、テストのためReact <=> Rails API間の通信時にエラーが発生しました。
調べる前に、エラー分をよく読んでみます。
翻訳通り、許可されていないパラメータをやりとりしているから?なのでしょうか、でもログイン処理は完了していました。
web_1 | Unpermitted parameters: :format, :registration
web_1 | Unpermitted parameters: :format, :registration
web_1 | Unpermitted parameters: :format, :registration
対応
調べた結果、通信を受けるAPI側でストロングパラメータの定義がまずかったことが判明。
requireメソッドを使用して、params内の特定のキー(registration)に紐付く値だけを抽出するよう記述する必要がありました。
※ストロングパラメータに関しては、参考記事がわかりやすかったため、そちらに役割を譲りたいと思います。気になる方はご確認ください。
class Api::V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController
private
def user_params
params.require(:registration).permit( :name, :email, :password,
:password_confirmation )
end
これでエラーは解消することができました。
参考
devise_token_authで「Unpermitted parameters: :format, :registration」が出た時の対処法
https://qiita.com/sssssatou/items/aedd9ec093afd89a3190
【Ruby on Rails】ストロングパラメータって何なの?
https://qiita.com/ozackiee/items/f100fd51f4839b3fdca8