2014-12-01 2 views
4

Я установил жемчужину Pundit в мое приложение Rails и внимательно следил за инструкциями в README.undefined method 'authorize' with Pundit

Однако, когда я использую авторизируйтесь в любом из моих контроллеров, я получаю сообщение об ошибке «не определен метод„авторизовать“для.

Кроме того, когда я пытаюсь использовать„политику“в целях, я получаю ошибка «неопределенный метод" политика».

Это как если бы Пандит не были установлены на всех!

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

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

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

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

+3

Pundit - это просто Ruby, поэтому включение его в контроллер приложений должно быть всем, что вам нужно. Вы уверены, что все правильно написано? Является ли 'include Pundit' первой строкой ниже декларации' ApplicationController'. Кроме того, ваши контроллеры наследуются от 'ApplicationController'? – nikkon226

+0

Спасибо! Эти мысли были полезны. –

+0

Послушайте, вы используете Clearance для аутентификации? Если это так, Devise использует метод, называемый 'authorize', который конфликтует с Pundit. В моем контроллере приложений у меня есть этот «alias_method: require_login,: authorize», а следующая строка - «include Pundit». Кроме того, убедитесь, что вы вызываете авторизацию на экземпляре модели (т. Е. 'Authorize @ my_var') –

ответ

2

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

или если они тогда Просто перезапустите сервер, чтобы исправить это. С надеждой.

0

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

rails g pundit:install 
    create app/policies/application_policy.rb