使用CanCan授权Namespaced和嵌套控制器

nvd*_*d90 5 ruby ruby-on-rails cancan ruby-on-rails-3

我有很多麻烦让cancan授权我的新路线设置如下:

namespace :api do
namespace :v1 do
  resources :users do
    resources :user_songs
    resources :friendships
    resources :plays
    resources :likes
    resources :songs
Run Code Online (Sandbox Code Playgroud)

我已经按照这里发布的https://github.com/ryanb/cancan/wiki/Nested-Resources进行了测试,并通过以下方式对喜欢的控制器进行了测试:

class Api::V1::LikesController < Api::V1::BaseController

load_and_authorize_resource :user
load_and_authorize_resource :like, :through => :user
Run Code Online (Sandbox Code Playgroud)

使用can:access,:all in ability.rb有效,但我试图限制的任何其他内容都没有例如:

can :access, :likes
can :access, Like
can :access, :users
can :access, User
can :access, [:"users/likes", :users_likes]
Run Code Online (Sandbox Code Playgroud)

我不太确定责任是否是因为命名空间路由.任何指导都将非常感谢!

nvd*_*d90 5

找到答案:毕竟这是命名空间,它只需要一个

can :access, "api/v1/likes"