未定义的方法`admin?'为零:NilClass

时间:2015-06-01 06:40:06

标签: ruby-on-rails authorization

我限制了其他用户的一个页面,但如果我没有登录并访问该页面,我会在行redirect_to '/' unless current_user.admin?

中收到错误

但如果我已登录并访问该页面,则可以正常使用。 在我的Application控制器

class ApplicationController < ActionController::Base
def require_admin
    redirect_to '/' unless current_user.admin?
end

请有人能告诉我为什么会出现这个错误 在此先感谢!!!

5 个答案:

答案 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