2013-08-28 63 views
0

我有一個Rails 4應用程序,我基於我的模型設置在我的應用程序中編寫了一個CanCan能力模型。雖然有時測試它有效,然後它不會。我不知道是什麼問題。日誌中沒有任何內容會指出問題。無論如何,我也不認爲它是乾淨的。有關如何改進此能力模型的任何建議?這看起來非常冗雜和令人困惑。CanCan能力模型

if user 
     ## 
     can :manage, User do |u| 
     case u.account 
      ## If user is a Developer allow it to only be managed by itself (user) 
      when Developer 
      u == user 
      ## If user is a Organization allow it to only be managed by it's founders 
      when Organization 
      u.account.founders.exists?(user) 
      else 
      false 
     end 
     end 

     can :manage, App do |a| 
     case a.appable 
      ## If app belongs to a Developer allow it to only be managed by it owner (developer) 
      when Developer 
      a.appable.id == user.id 
      ## If app belongs to a Organization allow it to only be managed by its organizations' founders 
      when Organization 
      a.appable.founders.exists?(user) 
      else 
      false 
     end 
     end 
     ## 
    end 

回答

0

至於清理它,你可以考慮按用戶角色組織邏輯。通過這種方式,您可以輕鬆查看某個特定角色,並瞭解他們所做的和無法訪問的所有功能。

事情是這樣的:

if user.developer? 
    can :manage User, id: user.id 
    can :manage App, App.appable_by(user) 
end 

注意:您可能需要編寫像App.appable_by(user)一些自定義查找器,以測試規則

我不完全跟隨你正在嘗試做組織/創始人。如果這是一個像user.founder一樣的角色?然後像上面提到的那樣對待它,但使用不同的授權規則。