2015-04-07 36 views
5

在具有activeadmin gem(當前主分支)的Rails 4應用程序中,我使用Pundit進行授權。它適用於資源,但我無法使其適用於網頁。activeadmin自定義頁面上的權威授權

鑑於例如:

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

我怎麼會授權其針對特定用戶?

通過閱讀權威人士自述我用下面的代碼嘗試,但它不工作

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

    def show? 
    true 
    end 
end 

任何想法?

回答

6

以下是我用於儀表板的示例策略。我已將它放在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 
+0

非常感謝,它的工作原理就像一個魅力;) – Alex

+1

@Alex你必須潛入Activeadmin代碼庫中找到像[這些]東西(https://github.com/ activeadmin/activeadmin/BLOB /主/規格/支持/模板/策略/ active_admin/page_policy.rb) – bsvin33t