在activeadmin自定义页面上使用Pundit授权

9
在一个使用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个回答

10

这是我在仪表盘中使用的一个示例策略。我将其放置在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

1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - bsvin33t

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接