gpt4 book ai didi

ruby-on-rails-3 - Rails 3 CanCan 授权范围所有权

转载 作者:行者123 更新时间:2023-12-04 05:23:27 26 4
gpt4 key购买 nike

我正在建立一个学校系统,教师可以在其中管理各自学校范围内的教室。

我有以下能力设置匹配:

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

从理论上讲,这应该使教师能够管理与教师设置没有关系的新记录,只要教师和新教室属于同一所学校。

在我的类新 Action 中,我从父学校 build 了教室以容纳这个 @classroom = @school.classrooms.build .这将使用 school_id 初始化新的类记录,从而使教师能够管理该记录。但是在我的教室 Controller 中,我调用 load_and_authorize_resource它在学校与类关系建立之前授权教师,并引发 CanCan 授权异常。

有没有办法解决这个问题?

最佳答案

CanCan 可能是在与学校建立联系之前检查能力。您可以明确地打破创建和管理权限:

can :create, Classroom
can :manage, Classroom, instructor_id: user.id

然后在验证中检查教室是否属于教师的学校。

关于ruby-on-rails-3 - Rails 3 CanCan 授权范围所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com