我有下一个角色模型:
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资源进行任何操作。
答案 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