CanCanCan可以授权相关对象

时间:2015-02-20 08:52:41

标签: ruby-on-rails associations cancan

My Routes.rb:

resources :users
resources :clients do
  resources :branches
end

我在Ability.rb中有这个。用户只能更新自己的客户。

  can [:update], Client, :id => user.clients.pluck(:id)

用户还应该能够:创建,:更新,:显示属于客户端的分支。它可能看起来像这样:

  can [:create, :update, :show], Branch, :client => { :id => user.clients.pluck(:id) }

适用于:update,:show,但不适用于:create。这是因为new Branch在创建之前没有client_id。 如何使其适用于:create?

1 个答案:

答案 0 :(得分:0)

您当前的能力实际上并未调用分支上的外键字段。像这样使用嵌套就像你想要的那样调用client.id而不是client_id

应阅读:

can [:create, :update, :show], Branch, client_id: user.client_ids

或者,与您的风格保持一致:

can [:create, :update, :show], Branch, client_id: user.clients.pluck(:id)