current_user在用户控制器的show动作中为nil

时间:2019-05-23 12:01:51

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

我接管了一个Rails项目,管理员可以在其中创建用户。 验证是通过devise gem完成的。

普通用户登录后,一切正常。 current_user变量保留了我的用户。但是,当我尝试通过该链接<%= link_to "My profile", user_path(current_user) %>访问用户的个人资料时,该链接指向User#show。我收到current_user为nil的错误消息。

我不明白为什么current_user突然为零。 是因为在show动作中设置了@user变量?

#user_controller.rb
class UsersController < ApplicationController
  load_and_authorize_resource
  before_action :set_user, only:[:destroy, :edit, :show, :update, :check_bonus]
  before_action :reset_session, except:[:show, :check_bonus]


  def show
    @user = User.find(params[:id])
  end

  private
  def set_user
    @user = User.find(params[:id])
  end

end

我真的不知道该找什么。在某些时候,会话将恢复(session[:validated] = false),但不能在User#show操作中恢复。

1 个答案:

答案 0 :(得分:-1)

我实际上发现了这一点,我有另一个before_action正在注销用户,而没有重定向到登录页面。 因此,没有current_user。 因此,仅代码本身就是问题!