Как мне использовать cancan для авторизации массива ресурсов?

У меня есть не успокаивающий контроллер, который я пытаюсь использовать для авторизации cancan! метод для применения разрешений.

У меня есть действие delete_multiple, которое начинается так

def delete_multiple
    @invoices = apparent_user.invoices.find(params[:invoice_ids])

Я хочу проверить, есть ли у пользователя разрешение на удаление всех этих счетов, прежде чем продолжить. Если я использую

authorize! :delete_multiple, @invoices

, в разрешении будет отказано. В моем файле capacity.rb есть следующее

if user.admin?
  can :manage, :all
elsif user.approved_user?
  can [:read, :update, :destroy, :delete_multiple], Invoice, :user_id => user.id
end

Это вопрос цикла по моему массиву и индивидуального вызова авторизации, или есть более разумный способ сделать что-то? Я начинаю чувствовать, что выполнять авторизацию было бы проще вручную, чем с помощью cancan для сложного не успокаивающего контроллера (хотя в моем приложении есть множество других спокойных контроллеров, которые отлично работают).

6
задан brad 27 March 2011 в 01:42
поделиться