2

多くの s とsを持つCourseClassモデルがあります。course_class インスタンスの教師が、その course_class の出席シートを管理できるようにしたいと考えています。AttendanceSheethas_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/ manageonであり、onまたはAttendanceSheetbe であると予想しました。false:read@attendance_sheets@course_class.attendance_sheetstrue

事前に助けてくれてありがとう。

4

0 に答える 0