🥚

【Ruby on Rails】devise Couldn't find User with 'id'=sign_out エラーなぜ?

2022/04/14に公開

学習用アウトプット記録です。
何か間違いがありましたら、ご指摘宜しくお願い致します。

問題

deviseを使用してユーザーログイン認証機能を追加後ログアウトボタン押したらエラー発生。
下の画像

環境

Windows10
cloud9
Ruby2.6.3
Rails6.1.4

解決方法

①ログイン後の遷移先の設定(applications_controller.rb)確認
applications_controller.rbにログアウトの遷移先を指定する。

 def after_sign_out_path_for(resource)
    root_path  ←ログアウト後の遷移先を指定
  end

今回はログアウト後、トップページ(ログインする前の画面)に遷移するように設定しています。
def after_sign_out_path_for(resource)はdeviseを導入したら使用できるメソッドです。
他にcurrent_userやuser_signed_in?などがあります。

②デフォルトの設定(config/initializers/devise.rb)確認
config/initializers/devise.rbのconfig.sign_out_viaをgetに変更する。
変更前

config.sign_out_via = :delete

変更後

config.sign_out_via = :get

私は①に関しては設定していましたが、①だけ設定していてもダメだったみたいです。
②を設定したらエラーが解決しました。
同じところで躓いた方の少しでも早く問題解決の参考になれば嬉しいです。

Discussion