我有一个带有布尔开关的用户模型来指定管理员 t/f。我当前的应用程序控制器:
class ApplicationController < ActionController::Base
protect_from_forgery
def after_sign_in_path_for(user)
if current_user.admin?
admin_index_path
else
dashboard_index_path
end
end
end
我当前的管理员控制器:
class AdminController < ApplicationController
def index
if current_user.admin?
admin_index_path
else
home_index_path
end
end
end
目标当然是只允许管理员用户访问管理员索引页面。当我以管理员身份登录时,重定向工作正常,但是当我以非管理员用户身份导航到 admin_index_path 时,我在 AdminController#index 中出现 NoMethodError 错误(未定义的方法 `admin?' 用于 nil:NilClass)。帮助解决这个问题?我觉得可能有一个更优雅和安全的 CanCan 解决方案,但我还没有找到一个很好的解释来说明如何实现它。想法?提前致谢!