CanCan Permissions - должны ли они быть явными?

Я новичок в RoR и использую CanCan для авторизации. Мне интересно, должен ли я быть явным с каждой отдельной способностью, которую может иметь пользователь.

Я, вероятно, недостаточно ясен, поэтому выложу код, чтобы проиллюстрировать мой вопрос.

if user.is_admin?
   can :manage, all
end

if user.is_director?
   can :update, Camp
end

В этом случае директор сможет обновить только лагерь? Или я должен был бы обозначить то, что он / она определенно не может сделать также?

Заранее спасибо.

2 ответа

Если вы добавили check_authorization на ваш ApplicationController, тогда да, по умолчанию он будет заблокирован для всех действий контроллера, если специально не перезаписано skip_authorization_check,

Посмотрите это обсуждение GitHub вокруг этой проблемы.

Если я правильно помню момент, когда вы реализуете CanCan, вы должны явно указать, пока вы вызываете authorize_resource (или же load_and_authorize_resource) в соответствующем контроллере.

Так что да (если вы вызываете один из методов авторизации в CampController).

(Также роль директора не должна пересекаться с ролью администратора;) Если она это делает, она просто получает все разрешения. И не правда ли :all ?)

Другие вопросы по тегам