我正在使用单个User
模型adtiveadmin
和应用程序本身。我找到了一种解决方案CanCan
,可以使用和限制对 activeadmin 模型页面的访问rolify
。请注意,在上面的示例中,他们使用常量来创建角色,而我使用rolify
gem。不过,我可以轻松访问 activeadmin 的仪表板。当我尝试访问 CMS 中的模型时,我被重定向到应用程序的根页面,并显示一条错误消息,指出我无权访问此页面。
有没有办法限制对 activeadmin 的仪表板和模型的访问,以便我被重定向到 activeadmin 的授权页面?
这是我的 active_admin_resource 初始化程序
#config/initializers/active_admin_resources.rb
ActiveAdmin::ResourceController.class_eval do
protected
def current_ability
@current_ability ||= AdminAbility.new(current_user)
end
end
能力等级定义如下:
#app/models/admin_ability.rb
class AdminAbility < ActiveRecord::Base
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.has_role? :admin
can :manage, :all
end
end
结尾
Activeadmin 的模型是这样定义的:
#app/admin/some_model.rb
ActiveAdmin.register SomeModel do
controller.authorize_resource
end
最后activeadmin的路由定义如下:
#config/routes.rb
Rallypoint::Application.routes.draw do
ActiveAdmin.routes(self)
end