【问题标题】:How to develop multi admin application with rails and cancan?如何使用 rails 和 cancan 开发多管理应用程序?
【发布时间】:2023-09-01 00:28:02
【问题描述】:

我有下一个角色模型:

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails devise cancan cancancan


    【解决方案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
    

    【讨论】:

      最近更新 更多