我正在与 Chrome 中的管理员用户和另一个浏览器中的普通用户一起工作。在我作为管理员销毁其中一个普通用户后,我尝试在被销毁的用户正在使用的浏览器中重新打开应用程序。但是,我收到此错误消息
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 答案,我尝试以两种不同的方式重置会话,但它们都重置了管理员用户的会话,而不是被破坏的用户
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 但它不接受它们。
谁能告诉我如何清除被破坏的用户会话?谢谢