Ruby on rails 不能';无法一次又一次地找到没有ID的用户

Ruby on rails 不能';无法一次又一次地找到没有ID的用户,ruby-on-rails,ruby,Ruby On Rails,Ruby,嗨,伙计们,我和RoR有些问题。我尝试这样定义一个当前用户 class ApplicationController < ActionController::Base protect_from_forgery with: :exception def current_user @current_user ||= User.find(session[:user_id]) end end class ApplicationController

嗨,伙计们,我和RoR有些问题。我尝试这样定义一个当前用户

class ApplicationController < ActionController::Base
    protect_from_forgery with: :exception

    def current_user
        @current_user ||= User.find(session[:user_id])
    end

end
class ApplicationController
这是我的错误:找不到没有ID的用户


我不知道为什么。。。我的BBD中有一个用户id。

您将收到此错误,因为您的会话中没有:user\u id。尝试:

@current_user ||= session[:user_id] && User.find(session[:user_id])

但请注意,若并没有键,rails将在每次调用
current\u user
时尝试从数据库中获取用户(因为
@current\u user
为nil)。避免这种情况的最佳方法是:

def current_user
  return @current_user if defined?(@current_user) 
  @current_user = User.find(session[:user_id])
end
这也将允许您缓存nil结果。

解决方案是

def current_user
    @current_user ||= session[:user_id] && User.find(session[:user_id])
en


检查
session[:user\u id]
是否为空
BBD
代表什么?谢谢你!)现在我将尝试确定哪个用户是管理员还是非管理员。Thx:)
def current_user
    @current_user ||= session[:user_id] && User.find(session[:user_id])
en
def current_user
    return unless session[:user_id]
    @current_user ||= User.find(session[:user_id])
end