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?
答案 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)