CanCanCan: как установить разрешения для каждого метода

У меня есть модель Report и ReportsController. Есть пара десятков действий.

Мне нужно установить разрешения для каждого действия контроллера для каждой роли. Как это реализовать?

1 ответ

В ability.rb вы можете иметь

if user.has_role?(:foo)
  can :some_custom_action, Report
end

if user.has_role?(:bar)
  can([:some_other_custom_action, :even_more_action], Report)
end

а также authorize_resource проверим на это, или для большего контроля вы можете позвонить authorize!(action_name.to_sym, @report || Report) в before_action

Также передайте действие accessible_by(current_ability, action_name.to_sym) объем

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