はじめに
学習用のメモとして投稿します。
deviseを使用して認証機能を実装する機会がありました。
その際に遭遇したエラーArgumentError
wrong number of arguments (given x, expected 2)
について書いていきます。
経緯
deviseでサインアップページを作成していました。
何とか完成し、正常に動作することを確認したものの、少し時間が経って、再びサインアップページへアクセスすると、次のエラーが発生しました。
ArgumentError in XXXX::RegistrationsController#new
wrong number of arguments (given x, expected 2)
Extracted source (around line #241):
241 def serialize_from_session(key, salt)
242 record = to_adapter.get(key)
243 record if record && record.authenticatable_salt == salt
244 end
原因
色々と調べて時間を費やしましたが、改めてエラーメッセージを見ると、セッション情報からシリアライズ化するメソッドで失敗しているようです。
単にサインアップページにアクセスしただけなのに、セッション情報関連でエラーが起こっているということは、ブラウザのセッション情報が原因のようです。
ブラウザからセッション情報を削除すると、サインアップページにアクセスできるようになりました。