2014-01-23 21 views
0

我有一個應用程序,有兩個角色,超級和管理員。超級可以做所有事情,管理員應該能夠做所有事情,除了類別。我已經實現了以下,但它仍然允許訪問類別管理:坎康超級和管理能力不起作用

def initialize(user) 
    user ||= User.new # guest user (not logged in) 

    if user.has_role? :super 
    can :manage, :all 
    elsif user.has_role? :admin 
    cannot :manage, :categories 
    can :manage, :all 
    end 
end 

如果我將其更改爲下面,它鎖定了管理員的一切。

def initialize(user) 
    user ||= User.new # guest user (not logged in) 

    if user.has_role? :super 
    can :manage, :all 
    elsif user.has_role? :admin 
    can :manage, :all 
    cannot :manage, :categories 
    end 
end 

我在我所有的控制器load_and_authorize_resource,但仍然沒有運氣計算出來。

回答

0

規則最終在一個數組中結束。

在第一個示例中,當您使用cannot時,此類規則從數組中刪除。但後來你定義了can :manage, :all,所以刪除的那個恢復了。

在後面的例子中,最後放置了cannot,所以刪除實際上已經生效。

+0

那麼第二個應該工作?但它沒有。 – Devan