【发布时间】:2012-11-19 22:23:30
【问题描述】:
我正在建立一个学校系统,教师可以在其中管理各自学校范围内的教室。
我有以下能力设置来匹配:
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 授权异常之前授权教师。
有没有办法解决这个问题?
【问题讨论】:
标签: ruby-on-rails-3 devise cancan before-filter