2011-11-15 50 views

回答

1

我寧願declarative_authorization在康康舞,如果用戶的角色更加複雜

https://github.com/stffn/declarative_authorization

http://railscasts.com/episodes/188-declarative-authorization

http://steffenbartsch.com/blog/2008/09/delclarative-authorization/


使用declarative_authorization您可以定義模型和方法的基於角色的授權。

您可以定義模型的權限以及模型中的方法。如果滿足某些條件,您可以進一步限制權限,例如您可以指定僅當對象的某個屬性具有特定值時才應用某些權限。

下面是一個例子,它指定一個普通用戶只能讀取和修改他/她僱傭的公司的賬戶(假設賬戶以樹狀方式排列,例如帶有「祖先」寶石)

authorization do 
role :user do 
    # ... 
    has_permission_on :accounts , :to => [:index, :show, :edit, :update] do 
     if_attribute :id => is_in { user.employed_at_account.subtree_ids } 
    end 
    # ... 
    end 

    role :admin do 
    # ... 
    has_permission_on :accounts , :to => [:create, :new, :index, :show , :edit, :update ] 
    # ... 
    end 
end 
+0

我看了一下聲明性授權。它似乎無法對模型的實例應用權限?如我錯了請糾正我。 – Teddy11

+0

只是好奇,爲什麼你更喜歡CanCan的declarative_authorization?看來,大多數Rails社區已經將CanCan作爲頭號授權寶石。 – Feech