错误未定义的方法“管理员?” for nil:NilClass - 似乎简单行不通
Error Undefined method `admin?' for nil:NilClass - Seems simple won't work
我有一个小问题,我花了大约一个小时尝试解决。看起来很简单。
如果有人进入用户索引视图,我希望他们重定向到 root url。除非他们是管理员。
任何修复方法的线索?
提前感谢您的帮助。
我有一个简单的测试
test "should redirect index when not logged in" do
get :index
assert_redirected_to login_url
end
但是我收到这个错误。
1) Error:
UsersControllerTest#test_should_redirect_index_when_not_logged_in:
NoMethodError: undefined method `admin?' for nil:NilClass
app/controllers/users_controller.rb:78:in `admin_user'
test/controllers/users_controller_test.rb:42:in `block in <class:UsersControllerTest>'
我在用户控制器中的admin_user方法如下
# Confirms an admin user.
def admin_user
redirect_to(root_url) unless current_user.admin?
end
current_user
为零。
所以像这样:
redirect_to(root_url) unless current_user && current_user.admin?
您需要检查您的用户是否已经登录。如果他没有登录,current_user
将是 nil
。您可能也想在 admin_user
方法中检查一下。
redirect_to(root_url) unless current_user.try(:admin?)
使用rails try
方法添加所有对象。
redirect_to(root_url) unless current_user.try(:admin?)
我有一个小问题,我花了大约一个小时尝试解决。看起来很简单。
如果有人进入用户索引视图,我希望他们重定向到 root url。除非他们是管理员。
任何修复方法的线索?
提前感谢您的帮助。
我有一个简单的测试
test "should redirect index when not logged in" do
get :index
assert_redirected_to login_url
end
但是我收到这个错误。
1) Error:
UsersControllerTest#test_should_redirect_index_when_not_logged_in:
NoMethodError: undefined method `admin?' for nil:NilClass
app/controllers/users_controller.rb:78:in `admin_user'
test/controllers/users_controller_test.rb:42:in `block in <class:UsersControllerTest>'
我在用户控制器中的admin_user方法如下
# Confirms an admin user.
def admin_user
redirect_to(root_url) unless current_user.admin?
end
current_user
为零。
所以像这样:
redirect_to(root_url) unless current_user && current_user.admin?
您需要检查您的用户是否已经登录。如果他没有登录,current_user
将是 nil
。您可能也想在 admin_user
方法中检查一下。
redirect_to(root_url) unless current_user.try(:admin?)
使用rails try
方法添加所有对象。
redirect_to(root_url) unless current_user.try(:admin?)