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