CanCan и контроллеры без моделей
Я использую CanCan для авторизации. Я определяю правила модели-действия-пользователя в /app/config/ability.rb, и он работает нормально. Я добавил строку load_and_authorize_resource
в свой application_controller, и все сделано.
Однако у меня также есть множество представлений и контроллеров, у которых нет модели под ней. Например, попытка загрузки страницы статистики дает
NameError (uninitialized constant Statistic):
activesupport (3.2.3) lib/active_support/inflector/methods.rb:229:in `block in constantize'
activesupport (3.2.3) lib/active_support/inflector/methods.rb:228:in `each'
activesupport (3.2.3) lib/active_support/inflector/methods.rb:228:in `constantize'
...
Есть ли способ CanCan работать с действием контроллера + вместо действия модели +?
Ответы
Ответ 1
Используйте authorize_resource :class => false
в вашем контроллере. CanCan автоматически проверяет способности на имени контроллера (в качестве символа единственного числа, например :statistic
для StatisticsController
)
См. https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers
Ответ 2
вы можете использовать этот драгоценный камень cancacan https://github.com/piedoom/cancancan", где люди находят обновление gem cancan до версии rails new