我有CourseClass
很多AttendanceSheet
s 和has_many
Teacher
s 的模型。我希望 course_class 实例的教师能够管理该 course_class 的考勤表。
我希望以下内容可以设置:
if user.has_role? :teacher
can [:manage], AttendanceSheet, course_class: { teachers: {id: user.id } }
end
用户具有全局角色,但也可以在 CourseClass 上具有每个实例的角色。理论上,上面应该检查他们是否具有全局角色,然后teachers
关联会在该 CourseClass 上仅找到具有实例角色的教师。
在控制器中,@attendance_sheets 设置为:
@attendance_sheets = @course_class.attendance_sheets.all
当我运行能力检查时,我得到以下结果:
[1] pry(#<#<Class:0x007fb011970ea0>>)> can? :read, @attendance_sheets
=> false
[2] pry(#<#<Class:0x007fb011970ea0>>)> can? :read, AttendanceSheet
=> true
[3] pry(#<#<Class:0x007fb011970ea0>>)> can? :read, @course_class.attendance_sheets
=> false
[4] pry(#<#<Class:0x007fb011970ea0>>)> can? :manage, AttendanceSheet
=> true
我期望/想要read
/manage
继续或继续。AttendanceSheet
false
:read
@attendance_sheets
@course_class.attendance_sheets
true
感谢您提前提供任何帮助。