由于我正在处理的应用程序不会有很多管理员,因此我已在user
模型中添加了一列 admin ,以便识别相应的用户是否为管理员
在控制器中,我需要使用** before_filter:authenticate_admin!**过滤器,但只有在应用程序是模型admin
时才能使用此过滤器。
如果我只使用admin的列属性而不是整个模型,如何添加此过滤器? 测试
if current_user.try(:admin?)
# do something
end
在每个动作中都不太实用。
当使用管理帐户的列时,是否有变体的内部过滤器?
答案 0 :(得分:1)
您可以创建自定义过滤器
application_controller
def authorize_admin
if !current_user.admin?
redirect_to(root_path, :notice => "Not Allowed") and return
end
end
并在您的控制器中使用
before_filter :authenticate_user
before_filter :authorize_admin, :only => [:create]
答案 1 :(得分:0)
对于只有管理员可以使用的操作,您可以设置要执行的文件管理器。说 您希望以下方法的访问权限仅适用于管理员
def create_new_users
User.create(name: "xxxx", email: "first@mail.com")
end
在application_controller中使用以下代码,该代码检查仅适用于admin的方法的访问权限。所以使用
before_filter :authenticate_user_access, :only => [:create_new_users]
def authenticate_user_access
current_user.is_admin
#is_admin the attribute in the user model to check for admin.set it false by default
end
您可以在以下位置添加多个方法:仅需要管理员访问权限。