在没有Devise Rails 5的情况下销毁用户会话

时间:2018-11-14 13:16:22

标签: ruby-on-rails ruby-on-rails-5

我将尝试在没有Devise的情况下进行简单的用户授权。 我的会话控制器具有新的,创建和销毁的操作:

  def new
    @user = User.new
  end

  def create
    @user = User.find_by(name: user_params[:name])
    @user ||= User.create(user_params)
    if @user.valid? && @user.authenticate(user_params[:password])
      session[:user_id] = @user.id
      redirect_to tasks_path
    end
  end

  def destroy
    reset_session
  end

但是它不起作用。如何销毁用户会话?

1 个答案:

答案 0 :(得分:0)

类似的事情应该可以做到。这实际上取决于您设置了什么样的助手。您将需要访问您创建的会话变量以及用户ID,因此session.delete(@user.id)可能最终将成为您所需要的。取决于将其发送到方法的方式以及您可以访问哪些数据(是否存在操作之前或提供@user变量的东西,或者是否需要使用@user = User.find(:params)之类的东西来找到它,其中params是用户ID。

def destroy
  session.delete(:user_id)
  @user = nil
end