【问题标题】:CanCan Permission for specific resourceCanCan 特定资源的权限
【发布时间】:2013-10-05 17:00:36
【问题描述】:

我的问题: 我得到了三个模型:

用户 注册 课程。

  1. 一个用户可以是许多课程的成员
  2. 一个课程有很多成员。

没问题,但现在我想拥有基于Enrollment 的特定权限。

例如我有:

  1. 用户:userA
  2. 两门课程:courseAcourseB

userA 是:

  • courseA 上的成员,角色为student
  • courseB 上的成员tutor

一个普通的学生角色应该只看到课程的内容,一个导师应该有扩展的权限(例如,编辑数据,添加数据......)

我的搜索结果只是我可以将一个用户分配给只有一个角色的课程...

是否有可能触及我的行为?

【问题讨论】:

    标签: ruby-on-rails authorization cancan roles


    【解决方案1】:

    假设role 是在Enrollment 上定义的,以下应该可以工作:

    can :read, Course, enrollment: { user_id: user.id }
    can :manage, Course, enrollment: { user_id: user.id, role: "tutor" }
    

    第一条规则捕获任何Enrollment 与用户的id 匹配的Course,允许用户查看它。第二个捕获任何Course,其Enrollment 与用户的id 匹配,并且role"tutor"。 (您也可以在第一条规则中指定"student" 的角色,但在这种情况下这可能是不必要的。)

    我尚未对此进行测试,您可能希望将实际权限更改为 :read:manage 以外的其他内容,但这应该会让您走上正轨。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多