注销帐户时的未定义方法

问题描述

我正在使用登录/注销系统,但是实际上很难注销并销毁会话。我收到“ 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

这是我在cass中的注销链接,我在这里犯了一些错误

<%= link_to "Log Out",logout_path,method: :delete,class: "dropdown-item" %>

我尝试将current_user传递给忘记方法,但这没有任何改变。

解决方法

在您的def forget(user)方法中,您正在呼叫User.forget而不是user.forget。看来forget是要用作实例方法而不是类方法,这就是您调用它的方式。