DesignAssembler

備忘録に近い

deviseとjsonで認証を作るときに422エラーでハマった

こんにちは。

現在ここを参考にrailsandroidの連携をしています。

lucatironi.github.io



ユーザー登録のテストをcurlでしようとしたのですが

Completed 422 Unprocessable Entity
{"success":false,"info":{"email":["can't be blank"],"password":["can't be blank"]},"data":{}}

のエラーが出てかなりハマりました。

どうやらregistration_controller.rb内のcreateアクションにあるbuild_resourceが問題のようです。

build_resourceにPOSTでデータを渡すまでは動いてるようですがbuild_resourceがデータベースにうまくデータを渡せていないみたいです。


この3日間ずっとググって情報を探してたのですが全然見つからずに悩んでいたのですが無事解決しました。

registration_controller.rbにsign_up_paramsアクションを追加してbuild_resourceを変更します。

#/app/controllers/api/v1/registration_controller.rb

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

def create
  build_resource(sign_up_params)
  resource.skip_confirmation!
#(以下略)

参考にしたサイトのコメント欄にありました。。。



そして無事にandroid appからの登録もできるようになりました。