rails6 deviseインストール後に「NameError: uninitialized constant User」が発生した場合の対処法

rails6 deviseインストール後に「NameError: uninitialized constant User」が発生した場合の対処法

rails6で、deviseインストール後に「NameError: uninitialized constant User」が発生した場合の対処法を記述してます。railsのバージョンは6.1.0です。

環境

  • OS ubuntu20.10
  • ruby 2.7.2
  • rails 6.1.0
  • Postgresql 13.1 (dockerで構築)

エラー全文

「rails db:migrate」実行時に発生

rails aborted!
NameError: uninitialized constant User
/home/mebee/rails-test/test-project/config/routes.rb:2:in `block in <main>'
/home/mebee/rails-test/test-project/config/routes.rb:1:in `<main>'
/home/mebee/rails-test/test-project/config/environment.rb:5:in `<main>'
/home/mebee/rails-test/test-project/bin/rails:5:in `<top (required)>'
/home/mebee/rails-test/test-project/bin/spring:8:in `block in <top (required)>'
/home/mebee/rails-test/test-project/bin/spring:5:in `tap'
/home/mebee/rails-test/test-project/bin/spring:5:in `<top (required)>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)

原因

「rails generate devise:install」をしてなかったために発生

対処法

「config」配下にある「routes.rb」にある「devise_for :users」を削除もしくはコメントアウトする

Rails.application.routes.draw do
  #devise_for :users

rollbackを行います。

rails db:rollback

モデルを削除します。

rails d model user

その後に「rails generate devise:install」を実行します。

rails generate devise:install
rails generate devise:views
rails generate devise User
rails db:migrate

自分の場合は、上記の手順で解決しました。