cancan - работа с ОГРОМНЫМ файлом

У меня есть важный аспект ролей на моем сайте, и мой файл powers.rb превратился в чудовище. Теперь он выполняет 25 запросов для проверки записей "ролей" каждый раз load_and_authorize_resource называется. Большинство этих запросов не имеют значения, потому что они управляют множеством различных разрешений, отличных от тех, которые относятся к используемому контроллеру.

Скажем, если на companies контроллер, я только хочу проверить разрешения для Company а также Projectи я хочу игнорировать Task, Employee, а также Assignment,

Как я могу отправить параметры ability.rb так он только выполняет соответствующие запросы каждый раз?

1 ответ

Решение

Хм, можно предположить, что вы можете определить свои собственные модели способностей для Компании и Проекта.

Нечто, что быстро приходит на ум, - это та же концепция, что и здесь.

Возможно, вы можете переопределить current_ability метод в компании и контролерах проекта соответственно. Что-то вроде:

def current_ability
  @current_ability ||= CompanyAbility.new(current_user)
end

И в твоем CompanyAbility модель, в которой вы определяете свои пользовательские настройки разрешений исключительно для компании.

Надеюсь, это поможет.

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