CanCan嵌套路线

时间:2014-02-11 05:24:45

标签: ruby-on-rails devise cancan rolify

我的代码嵌套在我的路线中的公司下面。

资源:公司,除了:[:destroy]做     资源:代码,除了:[:destroy]   端

能力:

can :read, Company do |c|
   user.has_role? :operator, c
end

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

我的CodesController检查

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。

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

1 个答案:

答案 0 :(得分:0)

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

load_and_authorize_resource :company

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

load_and_authorize_resource :company
load_and_authorize_resource :code, through: :company

我没有看到你的before_filter有任何附加价值,因为这正是CanCan会为你做的......