首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3 CanCan授权作用域所有权

Rails 3 CanCan授权作用域所有权
EN

Stack Overflow用户
提问于 2012-11-20 06:23:30
回答 1查看 404关注 0票数 2

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

我有以下能力设置来匹配:

代码语言:javascript
复制
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授权异常。

有什么办法可以解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-20 06:34:43

在与学校建立联系之前,CanCan可能正在检查能力。您可以显式拆分创建和管理权限:

代码语言:javascript
复制
can :create, Classroom
can :manage, Classroom, instructor_id: user.id

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13463380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档