2014-07-25 43 views
0

我有一個(相對)大的rails應用程序使用基於角色的權限的聲明授權。管理員用戶目前有以下權限:聲明性授權has_(不)_permission_on

role :administrator do 
    has_omnipotence 
end 

我需要添加一個更高的角色(根),可以專門對某些操作的權限。

最明顯的事情是讓從管理員角色塊擺脫has_omnipotence和手動添加所有控制器上,但root_accounts所有權限,但是這是痛苦的。有沒有辦法可以做到以下幾點?

role :root do 
    has_permission_on [:root_accounts], :to => [:new, :create ... ] 
end 

role :administrator do 
    has_omnipotence {except [:root_accounts], :to => [:new, :create ...]} 
end 

回答

0

沒有這樣的語法。但是,您可以爲您在您的視圖/控制器的特定角色:

<% unless has_role?(:administrator) %> 
    <%= link_to 'New root account', new_root_account_path %> 
<% end %> 

def create 
    permission_denied if has_role?(:administrator) 
    ... 
end 

這不是很可擴展壽。