Perhaps CanCan can: manage ,: everything except one or more methods?

I do:

can :manage, :all if user.role == 'admin' can :approve, Anuncio do |anuncio| anuncio.try(:aprovado) == false end 

My second method does not work because: manage: all override it. Theres a way to announce can manage all but approve? and inside approve, I just do

 can :approve, Anuncio do |anuncio| user.role == 'admin' && anuncio.try(:aprovado) == false end 

What is the best solution?

+6
source share
1 answer

Try to do it differently, see the cancan wiki . Try:

 can :manage, :all if user.role == 'admin' cannot :approve, Anuncio do |anuncio| anuncio.try(:aprovado) end 
+14
source

Source: https://habr.com/ru/post/944729/


All Articles