В 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)
scope