Неопределенный метод 'модель' для пользователя - PullRequest
0 голосов
/ 01 марта 2011

Я сделал аутентификацию в своем приложении на Rails 3, следуя инструкции Тони и этому второму учебнику .

Но я получаю

неопределенный метод 'модель' для пользователя

Это просто копирование / вставка из учебника, и я думаю, что это проблема кого-то в моей архитектуре приложения:)

Я получаю ошибку при попытке доступаto / users / new

Ответы [ 2 ]

0 голосов
/ 02 марта 2011

Я не могу воспроизвести проблему, с которой вы столкнулись на моем локальном компьютере, вот мое лучшее предположение: единственная причина, по которой, по вашему мнению, существует @user, заключается в том, что вы вызываете load_and_authorize_resource в своем контроллере, который является методом CanCan, который создает объект @user. Это может быть источником вашей проблемы, поэтому вы можете попробовать использовать authorize_resource и затем явно создать @user в вашем новом методе.

Вот пара вещей, которые я заметил:

  1. Стандартный путь создания пользователя для devise - / users / sign_up, но вы используете / users / new, который указывает на ваш пользовательский пользовательский контроллер, который не является частью devise, это будет очень проблематично при использовании таких модулей devise, как подтверждаемый, потому что он не будет создавать токены подтверждения или отправлять электронные письма.
  2. Вы создали собственный контроллер для регистраций, но не сказали об этом. Вам нужно будет сделать что-то вроде devise_for :users, :controllers => { :registrations => "users/registrations" } в вашем файле rout.rb, чтобы устройство могло использовать ваш контроллер.
  3. Как только вы загрузитесь на страницу регистрации, вам нужно будет добавить имя_символа и фамилию в вашу базу данных, иначе вы не получите ошибок метода.

Я бы начал с устранения этих проблем, прежде чем углубляться в вашу текущую проблему.

Возможно, стоит свести код к тому, что есть у Тони, и заставить его работать до того, как вы начнете добавлять интерфейс отчетов. Я видел, что в вашей базе данных есть списки ролей "super_admin", "global_user" и "internal_user", но вы вызываете camelize для строки перед запросом, поэтому я сомневаюсь, что CanCan работает правильно в вашей среде.

И последнее: убедитесь, что вы изменили все пароли и все, чем вы поделились, - посмотрите на этот пост, чтобы увидеть список файлов для изменения .

0 голосов
/ 02 марта 2011

Для настройки представлений, созданных Devise, сначала сгенерируйте их в своем приложении.

Рельсы генерируют devise: views

Это импортирует все нужные вам представления, и вы можете их настроить по своему вкусу.содержание.Это код из представления нового пользователя (/devise/registrations/new.html)

'<% = form_for (resource,: as => имя_ресурса,: url => registration_path (имя_ресурса)) do |е |%> '

вы заметите, что @user отсутствует - это использование @user, которое выдает неопределенную ошибку модели метода.

Не знаю, почему используется ресурс, а не @пользователь, но, надеюсь, это поможет вам.

...