如何使用rails和cancan开发多管理应用程序?

时间:2017-03-06 14:07:03

标签: ruby-on-rails devise cancan cancancan

我有下一个角色模型:

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

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

Admin1可以创建Manager1,Manager1可以创建User1。 Admin1应该具有管理嵌套用户User1,2,3的所有Manager1和Manager2资源和资源的能力。 Manager1应该管理自己的资源和User1,2的资源。

Admin2不应对Admin1,Manager1,2和User1,2,3资源进行任何操作。

1 个答案:

答案 0 :(得分: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