This post is also available in: 日本語 (Japanese)
Railsを利用していて、既に user というModelとDBテーブルを作っている状態でうっかり rails generate model user とかしてしまうと以下のようなエラーが出ます。
私の場合、既にuserというModelとDBでアプリを制作し始めていて、その後に gem 'devise' を導入して、userのModelとDBを上書きする必要に迫られた時のメモです。
rails uninitialized constant model-name
以下の記事内容の別の方法として、既存のマイグレーションファイル(例えば、_create_users.rb ファイル)を削除した後、新たな rails generate model user(Deviceの場合は、rails generate devise user)でマイグレーションファイルを作成し、マイグレーションファイルのタイムスタンプを書き換えて、rake db:migrate するという方法もあります。
チーム開発には適してませんが。
1.drop_tableのマイグレーションファイルを生成
ひとまず、以下のDBとModelを削除することから始めます。
既存のマイグレーションファイル(例えば、_create_users.rb ファイル)を削除したり、rake db:rollback でなんとかならないかな...とか思っていたら意味不明になります。
rails generate migration drop_table_users rails delete model users
drop_table_users のマイグレーションファイルは以下のようなコードになります。
class DropTableUsers < ActiveRecord::Migration def change drop_table :users end end
2.新しいModelとDBを作成する
例えば以下のようなコマンドで、新しいuserモデルとマイグレーションファイルを生成します。
rails generate model User name:string
3.rakeコマンドでDBをリセットする
マイグレーションファイルの修正の仕方によって多少代わりますが、rakeコマンドでDBをリセットします。
rake db:migrate:reset