我在Rails中构建一个基本应用程序,使用Bcrypt和has_secure_password进行身份验证。
我试图删除用户,在视图中放置一个链接,然后在用户控制器中放置基本方法:
def destroy
@user.destroy
redirect_to root_path(@user)
end
问题是这似乎删除了用户而没有先结束会话,所以现在我陷入了一个循环,其中错误信息显示为:找不到用户' id' = 5,因为用户已被删除。
我试图通过使用:kill -9 PID来终止终端中的用户会话,但是这没有预期的效果。它似乎只与ctrl-c相同。
我想知道如果再次发生这种情况我是如何终止终端中的用户会话的,以及我如何能够同时删除用户和用户会话。谢谢
PS。会话控制器根据Bcrypt具有以下方法:
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to new_comment_path, notice: "Logged in!"
else
flash.now.alert = "Email or password is invalid"
render "new"
end
end
def destroy
session[:user_id] = nil
redirect_to root_url, notice: "Logged out!"
end
答案 0 :(得分:0)
在你的销毁方法中你可以这样做:
def destroy
User.find(session[:user_id]).destroy
session[:user_id] = nil
redirect_to root_url, notice: "Logged out!"
end