我限制了其他用户的一个页面,但如果我没有登录并访问该页面,我会在行redirect_to '/' unless current_user.admin?
但如果我已登录并访问该页面,则可以正常使用。
在我的Application
控制器
class ApplicationController < ActionController::Base
def require_admin
redirect_to '/' unless current_user.admin?
end
请有人能告诉我为什么会出现这个错误 在此先感谢!!!
答案 0 :(得分:3)
current_user.try(:admin?)
这将检查当前用户是否存在
答案 1 :(得分:2)
检查您是否已登录您的应用程序并执行以下操作:
def require_admin
redirect_to root_path if current_user && current_user.admin?
end
您可以使用root_path重定向到您的主页,而不是编写redirect_to'/'。
答案 2 :(得分:1)
您收到此错误是因为您未登录,因此current_user
方法会返回nil
。
答案 3 :(得分:0)
确保current_user始终是用户实例,或检查它是否为零:
if current_user && current_user.admin?
您也可以使用current_user.try(:admin?)
,如果current_user为nil,它将无声地失败。
答案 4 :(得分:0)
这可能对您有所帮助
def require_admin
redirect_to '/' if current_user && current_user.admin?
end