Ho una risorsa Progetti che è annidata nella risorsa Utenti.Rails cancan che autorizza le risorse nidificate
mio Cancan classe Ability è:
class Ability
include CanCan::Ability
def initialize(user)
#everyone
can :read, Project
if user.blank?
# guest user
...
else
#every signed in user
case user.role
when User::ROLES[:admin]
#only admin role user
can :manage, :all
when User::ROLES[:member]
#only member role user
can :update, User, :id => user.id
can [:create, :update, :destroy], Project, :user_id => user.id
else
end
end
end
end
e il controller Progetti:
class ProjectsController < ApplicationController
load_and_authorize_resource :user
load_and_authorize_resource :projects, :through => :user, :shallow => true
...
end
ho alcune domande:
è possibile negare: Leggi i commenti e lasciare: leggere Progetto, in modo che tutti potessero accedere/utenti/10/progetti, ma non/utenti/10 o/utenti?
Come posso negare l'accesso utente: nuova azione con altro user_id? Ad esempio, se aggiungo
#everyone
can :read, User
can :read, Project
questo codice permette all'utente con id 42 per accesso/utente/41/progetti/nuovo.