Я не могу воспроизвести проблему, с которой вы столкнулись на моем локальном компьютере, вот мое лучшее предположение: единственная причина, по которой, по вашему мнению, существует @user, заключается в том, что вы вызываете load_and_authorize_resource в своем контроллере, который является методом CanCan, который создает объект @user. Это может быть источником вашей проблемы, поэтому вы можете попробовать использовать authorize_resource и затем явно создать @user в вашем новом методе.
Вот пара вещей, которые я заметил:
- Стандартный путь создания пользователя для devise - / users / sign_up, но вы используете / users / new, который указывает на ваш пользовательский пользовательский контроллер, который не является частью devise, это будет очень проблематично при использовании таких модулей devise, как подтверждаемый, потому что он не будет создавать токены подтверждения или отправлять электронные письма.
- Вы создали собственный контроллер для регистраций, но не сказали об этом. Вам нужно будет сделать что-то вроде
devise_for :users, :controllers => { :registrations => "users/registrations" }
в вашем файле rout.rb, чтобы устройство могло использовать ваш контроллер.
- Как только вы загрузитесь на страницу регистрации, вам нужно будет добавить имя_символа и фамилию в вашу базу данных, иначе вы не получите ошибок метода.
Я бы начал с устранения этих проблем, прежде чем углубляться в вашу текущую проблему.
Возможно, стоит свести код к тому, что есть у Тони, и заставить его работать до того, как вы начнете добавлять интерфейс отчетов. Я видел, что в вашей базе данных есть списки ролей "super_admin", "global_user" и "internal_user", но вы вызываете camelize для строки перед запросом, поэтому я сомневаюсь, что CanCan работает правильно в вашей среде.
И последнее: убедитесь, что вы изменили все пароли и все, чем вы поделились, - посмотрите на этот пост, чтобы увидеть список файлов для изменения .