首页 > 解决方案 > Rails 5.2 到 6.0 的迁移命名空间升级问题:未初始化的常量错误

问题描述

NameError Exception: uninitialized constant在引用 ActiveRecord 模型的迁移中遇到错误问题。控制台中不存在这些相同的问题,因此我对迁移中发生的与 Rails 控制台不同的情况感到有些困惑。

基本上,我的 ActiveRecord 模型似乎没有正确地自动加载所有内容。

下面是一个在控制台中运行但在迁移中引发错误的简单调用示例:

migration(byebug)> Customer.all
*** NameError Exception: uninitialized constant Customer (call 'Customer.connection' to establish a connection)::Querier
Did you mean?  Numerizer

nil

在控制台中,同样的调用有效。

有趣的是,如果我首先调用另一个可以正确加载的模型(例如),那么MyOtherThing.all如果我下次尝试调用 to 就Customer.all不会再引发错误。

只是有点难过从哪里开始寻找导致这种情况的原因。谢谢!

标签: ruby-on-railsrubyruby-on-rails-6

解决方案


这最终成为一个已知问题:

https://github.com/rails/rails/issues/37748

希望它会很快得到修复。而且,我的部分困惑与处理byebug导致真正错误的原因有关。


推荐阅读