我的问题: 我有三个型号:
用户< - >注册< - >课程。
这没问题,但现在我希望拥有基于Enrollment
的特定权限。
例如我有:
userA
courseA
和courseB
userA
是:
courseA
上有student
courseB
上的成员tutor
。 普通学生角色应该只看到课程内容,导师应该具有扩展权限(例如,编辑数据,添加数据......)
我的搜索结果只是我可以将用户分配给只有一个角色的课程......
有可能达到我的行为吗?
答案 0 :(得分:0)
假设在role
上定义了Enrollment
,则以下内容应该有效:
can :read, Course, enrollment: { user_id: user.id }
can :manage, Course, enrollment: { user_id: user.id, role: "tutor" }
第一条规则会捕获与用户的Course
匹配的Enrollment
的任何id
,允许用户查看它。第二个捕获Course
,其中Enrollment
与用户的id
匹配,role
与"tutor"
匹配。 (您也可以在第一条规则上指定"student"
的角色,但在这种情况下可能没有必要。)
我尚未对此进行测试,您可能希望将实际权限更改为:read
和:manage
以外的其他权限,但这样可以让您走上正确的道路。