Я установил жемчужину Pundit в мое приложение Rails и внимательно следил за инструкциями в README.undefined method 'authorize' with Pundit
Однако, когда я использую авторизируйтесь в любом из моих контроллеров, я получаю сообщение об ошибке «не определен метод„авторизовать“для.
Кроме того, когда я пытаюсь использовать„политику“в целях, я получаю ошибка «неопределенный метод" политика».
Это как если бы Пандит не были установлены на всех!
Я включил Pundit в мой контроллер приложений.
у меня есть файл ApplicationPolicy со всеми мои политики, затем файлы политики для каждого типа записи, которые наследуются от политики приложения.
По какой-то причине я не могу вставить какой-либо из своих кодов в этот вопрос, поэтому я надеюсь, что я включил достаточно информации!
Буду признателен за любые мысли.
Pundit - это просто Ruby, поэтому включение его в контроллер приложений должно быть всем, что вам нужно. Вы уверены, что все правильно написано? Является ли 'include Pundit' первой строкой ниже декларации' ApplicationController'. Кроме того, ваши контроллеры наследуются от 'ApplicationController'? – nikkon226
Спасибо! Эти мысли были полезны. –
Послушайте, вы используете Clearance для аутентификации? Если это так, Devise использует метод, называемый 'authorize', который конфликтует с Pundit. В моем контроллере приложений у меня есть этот «alias_method: require_login,: authorize», а следующая строка - «include Pundit». Кроме того, убедитесь, что вы вызываете авторизацию на экземпляре модели (т. Е. 'Authorize @ my_var') –