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

时间:2012-09-08 20:49:16

标签: ruby-on-rails ruby ruby-on-rails-3 cancan

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

namespace :api do
namespace :v1 do
  resources :users do
    resources :user_songs
    resources :friendships
    resources :plays
    resources :likes
    resources :songs

我已经按照这里发布的内容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

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

can :access, :likes
can :access, Like
can :access, :users
can :access, User
can :access, [:"users/likes", :users_likes]

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

1 个答案:

答案 0 :(得分:5)

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

can :access, "api/v1/likes"