如何使用activeadmin设置cancan而没有任何副作用?

时间:2019-01-16 11:15:24

标签: ruby-on-rails ruby authorization activeadmin cancan

我正在运行一个活动的管理员代码,如下所示

ActiveAdmin.register UserProcess, as: 'Summary' do
....
end

active_admin.rb-

config.authorization_adapter = ActiveAdmin::CanCanAdapter
config.cancan_ability_class = "Ability"
config.on_unauthorized_access = :access_denied

我想阻止用户访问“摘要”页面,而实际上不阻止其从UserProcess访问。

为该页面添加cannot :manage, UserProcess,但是它也不允许用户访问其他页面。

我的命名空间也是:actadmin

请让我知道在Ability类中编写的正确内容

1 个答案:

答案 0 :(得分:0)

我通过创建自定义页面并在该页面上应用cancan能力解决了类似的问题,否则将能力应用于资源上。

ActiveAdmin.register_page "Summary" do
 menu parent: "UserProcess", label: "Summary"
  content title: "Summary" do
   .......
   .......
  end
end

并以这种方式对其应用能力:

class Ability
 include CanCan::Ability
  def initialize(users)
   can :manage UserProcess
   cannot :manage, ActiveAdmin::Page, name: "Summary"
  end
end

如果到时候发现了另一个更清洁的解决方案,请编辑我!