プログラミングと料理を

プログラミングに疲れたら料理

Deviseのafter_sign_in_path_forにdestroy_user_session_pathをつけたい

Deviseでログイン時にユーザーにごとにリダイレクト先を分ける設定で、
あるユーザーはログアウトさせたい。ログインさせたくない時。


def after_sign_in_path_for(user)
if current_user.status == 'user'
projects1_path //user先のパス
elsif current_user.status == 'admin'
projects1_path //admin先のパス
else
Devise.sign_out_all_scopes ? sign_out : sign_out(current_user)
root_path //他はログアウトさせる
end
end

ユーザーにstatusというカラムを作って
そこに入るデータはuserかadmin

[user]の場合
current_user.status == 'user'
projects1_path

[admin]の場合
current_user.status == 'admin'
projects1_path

[その他]の場合
Devise.sign_out_all_scopes ? sign_out : sign_out(current_user)
root_path

ログアウト処理をさせるようにしました。
単純にdestroy_user_session_pathにすると、ルートエラーが起きたので
他を調べたらGetにオーバライドするとか書いてあったんですが、
Deleteメソッドを変えたくなかった結果これで無事動きました。