2
我正在建立一個學校系統,教員可以在各自學校範圍內管理教室。Rails 3 CanCan授權範圍所有權
我有以下能力的設置相匹配:
class Ability
include CanCan::Ability
#define the user ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.has_role? :instructor
can :manage, Classroom do |classroom|
classroom.new_record? && classroom.school_id == user.school_id || classroom.instructor == user
end
end
end
end
理論上,這應該使教師管理的新記錄,這將不會有他們與導師建立關係,只要教練和新的兩教室屬於同一所學校。
在我的教室新行動中,我從父母學校建造教室來容納這個@classroom = @school.classrooms.build
。這會使用school_id初始化新課堂記錄,以便教員管理記錄。然而,在我的教室控制器中,我打電話給load_and_authorize_resource
,授權教師在學校之前建立教室關係並引發CanCan授權異常。
有沒有辦法解決這個問題?
當然,我想我對我的授權過於依賴cancan。有一點需要注意的是,語法'can:manage,Classroom,instructor == user'在cancan 1.6.8上看起來不太可行,我得到了未定義的局部變量或方法指導。然而,在教室裏面的工作可以阻止。 – Noz
該語法可能只適用於屬性,不適用於關聯 - 請嘗試編輯後的版本。 – Thilo
很好的嘗試,但仍然沒有骰子。儘管如此,稍微詳細一點並不是一個大問題。 – Noz