问题描述
我正在使用登录/注销系统,但是实际上很难注销并销毁会话。我收到“ SessionsController#destroy中的NoMethodError”,这是我的“忘记”方法的未定义方法。
这是我的会话助手中的方法。
def forget(user)
User.forget
cookies.delete(:user_id)
cookies.delete(:remember_token)
end
def log_out
current_user && forget(current_user)
session.delete(:user_id)
@current_user = nil
end
还有我的会话控制器:
def destroy
log_out if logged_in?
redirect_to_root_url
end
<%= link_to "Log Out",logout_path,method: :delete,class: "dropdown-item" %>
我尝试将current_user传递给忘记方法,但这没有任何改变。
解决方法
在您的def forget(user)
方法中,您正在呼叫User.forget
而不是user.forget
。看来forget
是要用作实例方法而不是类方法,这就是您调用它的方式。