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
модель, в которой вы определяете свои пользовательские настройки разрешений исключительно для компании.
Надеюсь, это поможет.