2017-03-06 11 views
1

私は役割の次のモデルを持っている:Admin1には、マネージャ1を作成することができますレールとcancanで複数の管理アプリケーションを開発するには?

Admin1 -> Manager1 -> User1 
     | 
     -> Manager2 -> User2 
        | 
        -> User3 

Admin2 -> Manager3 -> User4 
     | 
     -> Manager4 -> User5 
        | 
        -> User6 

、マネージャ1は、ユーザー1を作成することができます。 Admin1には、すべてのManager1とManager2のリソースと、ネストされたユーザーUser1,2,3のリソースを管理する能力が必要です。 Manager1は自分のリソースとUser1,2のリソースを管理する必要があります。

Admin2は、Admin1、Manager1,2、およびUser1,2,3のリソースに対して何らかのアクションを実行できません。

答えて

1

ユーザーモデルに、そのユーザーを作成したユーザーへの参照を保持するuser_creatorなどのフィールドを追加できます。次に、ユーザーが作成した、または作成したユーザーによって作成された(cancancanを使用して)他のユーザーを管理/管理できることを確認します。これは、あなたが探しているものを達成するはずです。

def sub_user_or_sub_sub_user_of?(user) 
    if self.sub_users.include?(user) 
    true 
    else self.sub_users.each do |sub_user| 
    return true if sub_user.sub_users.include?(user) 
    end 
    end 
end 
:現在のユーザーが他のユーザーを管理/管理することが可能である場合 そのあとのようなもので、確認することができます
関連する問題