多くの s とsを持つCourseClass
モデルがあります。course_class インスタンスの教師が、その course_class の出席シートを管理できるようにしたいと考えています。AttendanceSheet
has_many
Teacher
私はそれを設定するために次のことを期待しています:
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
onであり、onまたはAttendanceSheet
be であると予想しました。false
:read
@attendance_sheets
@course_class.attendance_sheets
true
事前に助けてくれてありがとう。