我有routes.rb:
resource :account, :only => [:show, :update]
在我的能力.rb中,我有
can :read, Account, :id => user.account_id
我在AccountsController中定义了def update和def show函数
当我对/ account执行GET请求时,此配置为我提供403,拒绝访问错误。但是,如果我将我的能力.rb改为
can :manage, Account, :id => user.account_id
它工作正常。我的:show函数没有被映射到的任何原因:read?
答案 0 :(得分:0)
好吧,我弄清楚问题是什么。所以这笔交易是我打电话给康康的授权!我自己对我的代码有一些约束,我正在传递像
这样的东西authorize!("show", @class_obj)
但实际上CanCan期望一个符号,所以正确的调用应该是
authorize!(:show, @class_obj)
可以这样实现:
authorize!("show".intern, @class_obj)