首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CanCan嵌套路由

CanCan嵌套路由
EN

Stack Overflow用户
提问于 2014-02-11 05:24:45
回答 1查看 180关注 0票数 0

我的路线上有公司的代码。

资源:公司,除::销毁做资源:代码,除外::销毁结束

能力:

代码语言:javascript
复制
can :read, Company do |c|
   user.has_role? :operator, c
end

can :read, Code do |c|
  user.has_role? :operator, code.company
 end

我的CodesController检查

代码语言:javascript
复制
before_filter :set_code, only: [:show, :edit, :update, :activate, :deactivate]
  load_and_authorize_resource :except => :create #TODO fix as cancan updates
     def index
       if params[:company_id]
       ...

如果我访问/companies/1/代码,而我的用户不应该访问它,我就看不到结果。但是,如果我试图直接查看/companies/1,就会得到CanCan AccessDenied。

为什么这不显示在嵌套索引中呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-11 06:02:25

您还应该在代码控制器中对父模型执行load_and_authorize_resource:

代码语言:javascript
复制
load_and_authorize_resource :company

然后通过公司加载代码资源:

代码语言:javascript
复制
load_and_authorize_resource :company
load_and_authorize_resource :code, through: :company

我看不出你的before_filter有什么附加值,因为这正是CanCan会为你做的.

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

https://stackoverflow.com/questions/21693829

复制
相关文章

相似问题

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