Chromeの管理者ユーザーと別のブラウザの通常のユーザーを使用しています。管理者として通常のユーザーの1人を破棄した後、破棄されたユーザーが使用していたブラウザーでアプリケーションを再度開こうとしました。しかし、私はこのエラーメッセージを受け取りました
Couldn't find Twitteruser with id=2
したがって、ユーザーが破棄された後も、セッションはブラウザで存続します
セッションはこのように作成されました
def create
twitteruser = Twitteruser.from_omniauth(env["omniauth.auth"])
session[:twitteruser_id] = twitteruser.id
redirect_to twitterquestions_url, notice: "Signed in!"
end
application_controllerでは、現在のユーザーはこのように作成されています
def current_user
@current_user ||= Twitteruser.find(session[:twitteruser_id]) if session[:twitteruser_id]
end
これは破壊アクションです
def destroy
Twitteruser.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to users_url
end
私が見つけた他のSOの回答に基づいて、2つの異なる方法でセッションをリセットしようとしましたが、どちらも、破棄されたユーザーではなく、管理者ユーザーのセッションをリセットしました。
def destroy
Twitteruser.find(params[:id]).destroy
#1. session[:twitteruser_id] = nil destroys my own session, not deleted users
#2. reset_session #reset admin's session
flash[:success] = "User destroyed."
redirect_to twitterusers_url
end
また、reset_sessionに引数を渡そうとしましたが、受け入れられません。
破壊されたユーザーのセッションをクリアする方法を教えてもらえますか?ありがとう