0

我有路线.rb:

resource :account, :only => [:show, :update]

在我的能力.rb中,我有

can :read, Account, :id => user.account_id

我在 AccountsController 中定义了 def update 和 def show 函数

当我对 /account 执行 GET 请求时,此配置给了我 403,访问被拒绝错误。但是,如果我将ability.rb 更改为

can :manage, Account, :id => user.account_id

它工作正常。为什么我的 :show 函数没有映射到 :read 的任何原因?

4

1 回答 1

0

好吧,我知道问题出在哪里了。所以交易是我打电话给康康的授权!对我的代码进行一些限制,我正在传递类似的东西

authorize!("show", @class_obj)

但实际上 CanCan 需要一个符号,所以正确的调用应该是

authorize!(:show, @class_obj)

可以这样实现:

authorize!("show".intern, @class_obj)
于 2012-10-16T17:48:07.720 回答