LoginSignup
2
1

More than 5 years have passed since last update.

Migration後の[NameError: uninitialized constant Xxxx]、[block in load_missing_constant]について

Last updated at Posted at 2019-03-28

問題

Userおよび Cupというモデルを作成し、rails db:migrate実行後、
rails cで実際にモデルができたか確かめたところ、

User
[1] pry(main)> User
=> User (call 'User.connection' to establish a connection)

Userはできた。しかし

[2] pry(main)> Cup
NameError: uninitialized constant Cup
from Users/owner/dev/cofapp/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.4.1/lib/bootsnap/
load_path_cache/core_ext/active_support.rb:76:in `block in load_missing_constant'

Cupができない…!

原因

試しにArticleというモデルのマイグレーションファイルを作成した。

# rails g model Article title:string
Running via Spring preloader in process 11065
      invoke  active_record
      create    db/migrate/20190328010859_create_articles.rb
      create    app/models/article.rb
      invoke    rspec
      create      spec/models/article_spec.rb
      invoke      factory_bot
      create        spec/factories/articles.rb

ここで気づく。

もしかしてmodels/cup.rbがない?


一応この状態でrails cしてArticleを呼ぶと

[1] pry(main)> Article
=> Article (call 'Article.connection' to establish a connection)

となり、うまく呼べた。

そしてmodels/cup.rbを確認しにいくと、案の定なかった

実は

migrationファイル作成用のブランチmigration01を切って
UserCup以外にもmigrationファイル作成→コミット・プッシュを繰り返してたんですが、
コミットが乱雑になってしまったので、新しいブランチmigration02を切って、
そこにmigration01migrationファイル「だけ」を全コピしていたのでした。

migrationファイルだけコピーしたので、
migration時に作成されたはずのmodels/cup.rbが存在せず、
読み込めなかったため、エラーが出てしまったと。



深く反省いたします。。(^ー;)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1