またまたDeviseです。
どうもDeviseは自分自身のパスワードを変更した場合、勝手にログアウトするようです。まぁそれはそれで正しい動作な気はしますが、そうしない方法はないかなーと思って探していたら、ありました。
class UsersController < ApplicationController
load_and_authorize_resource
def update
@user.skip_reconfirmation! # メールアドレス変更確認しない
result = if current_user.id == @user.id
# 自身の更新ならパスワード入力を求める
@user.update_with_password(user_params)
else
@user.update(user_params)
end
if result
# パスワード変更でログアウトするのを防ぐ
sign_in(@user, bypass: true) if current_user.id == @user.id
redirect_to user_path(@user), notice: '更新しました'
else
render action: :edit
end
end
end
無理矢理、再ログインさせるって感じですかね。
