Вот фрагмент моего кода из класса моих способностей
if user.admin?
can :manage, :all
can :destroy, :all if != current_user
Я уверен, что вы можете понять, что я пытаюсь сделать здесь. Я понимаю, что уничтожить входит в управление, и я повторяю себя там. Есть предложения?
РЕДАКТИРОВАТЬ Ответ Йерема был правильным, и я просто изменил его, чтобы он соответствовал моему коду. Вот как это выглядит.
if user.admin?
can :manage, :all
cannot :destroy, User, :id => user.id
Как сказал Йьерем, в канкане приоритетность способностей гласит, что способности, определенные ниже, превосходят над ними, так что администратор может управлять всем, кроме того, что определено в нем, используя код выше.