Activeadmin自定义页面上的权威授权

时间:2015-04-07 09:50:21

标签: ruby-on-rails activeadmin pundit

在带有activeadmin gem(当前主分支)的Rails 4应用程序中,我使用Pundit进行授权。它适用于资源,但我无法使其适用于页面。

举个例子:

ActiveAdmin.register_page "Home" do
    content do
        para "some text"
    end
end

我如何为特定用户授权?

通过阅读Pundit自述文件,我尝试使用以下代码,但它不起作用

class HomePolicy < Struct.new(:user, :home)
  def index?
    true
  end

  def show?
    true
  end
end

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

以下是我用于信息中心的示例策略。我把它放在policies/active_admin/page_policy.rb下面。也许这可能会有所帮助

class ActiveAdmin::PagePolicy
  attr_reader :user, :record

  def initialize(user, record)
    @user = user
    @record = record
  end

  def show?
    case record.name
    when 'Dashboard'
      true
    else
      user.admin?
    end
  end
end