Подтвердить что ты не робот

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 работать с действием контроллера + вместо действия модели +?

4b9b3361

Ответ 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