неопределенный метод авторизации с помощью Pundit

Я установил гем Pundit в свое приложение Rails и внимательно следил за инструкциями в README.

Однако, когда я использую авторизацию в любом из моих контроллеров, я получаю сообщение об ошибке «undefined method 'authorize' for.

Кроме того, когда я пытаюсь использовать «policy» в представлении, я получаю сообщение об ошибке «undefined method 'policy'».

Как будто Pundit вообще не установили!

Я включил Pundit в свой контроллер приложений.

У меня есть файл ApplicationPolicy со всеми моими политиками, а затем файлы политик для каждого типа записи, наследуемой от политики приложения.

По какой-то причине я не могу вставить свой код в этот вопрос, поэтому надеюсь, что включил достаточно информации!

Буду признателен за любые мысли.


person Ellen W    schedule 01.12.2014    source источник
comment
Pundit - это просто Ruby, поэтому включение его в контроллер приложений должно быть всем, что вам нужно. Вы уверены, что все написали правильно? Является ли include Pundit первой строкой после объявления ApplicationController. Кроме того, наследуются ли ваши контроллеры от ApplicationController?   -  person nikkon226    schedule 02.12.2014
comment
Спасибо! Эти мысли были полезны.   -  person Ellen W    schedule 02.12.2014
comment
Случайно вы используете Clearance для аутентификации? В таком случае Devise использует метод authorize, который конфликтует с Pundit. В моем контроллере приложения у меня есть этот alias_method :require_login, :authorize, а следующая строка - это мой include Pundit. Кроме того, убедитесь, что вы вызываете авторизацию для экземпляра модели (т. Е. authorize @my_var)   -  person craig.kaminsky    schedule 05.01.2015


Ответы (2)


Я недавно использовал pundit, и он отлично сработал. Ваши сообщения об ошибках заставляют меня предположить, что вы не запустили install rails g pundit: install или ваш файл политик находится в неправильных каталогах.

или, если они есть, то это должно исправить просто перезапуск сервера. С надеждой.

person Neeraj Gupta    schedule 05.01.2015

Вам необходимо сгенерировать файл политики по умолчанию для вашего приложения с помощью pundit: install generator.

rails g pundit:install
  create  app/policies/application_policy.rb
person bntzio    schedule 13.03.2015