2012-09-08 18 views
5

ich ein wenig recht haben beunruhigende Cancan immer meine neue Routen-Setup unten zu genehmigen:Autorisieren Namensräume und Nested-Controller CanCan mit

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

ich verfolgt haben, was hier https://github.com/ryanb/cancan/wiki/Nested-Resources geschrieben und getestet wurde es mit dem Controller gefällt durch dies oben setzen:

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

load_and_authorize_resource :user 
load_and_authorize_resource :like, :through => :user 

mit Hilfe eines kann: Zugang,: alle in ability.rb funktioniert, aber alles, was ich versucht habe heißt zu begrenzen hat nicht zum Beispiel:

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

Ich bin nicht sicher, ob die Schuld an den Namensraumrouten liegt oder nicht. Jede Anleitung würde sehr geschätzt werden!

Antwort

5

die Antwort herausgefunden: Es ist der Namespace schließlich war es brauchte nur ein

can :access, "api/v1/likes"

+0

wie funktioniert dies nur für GET-Anfragen scheint und nicht-Anfragen stellen hinzugefügt werden: erstellen, „api/v1/mag "zu sehen, ob es wichtig war und es keinen Unterschied machte. – nvd90

+0

Es wurde eine Dose benötigt: Zugang,: mag direkt darunter, damit es funktioniert. – nvd90

+1

Es gab einen Fehler damit, aber es wurde [behoben in 1.6.10] (https://github.com/ryanb/cancan/pull/675) –