Ruby STI和未初始化常数-机器修复后

Ruby STI和未初始化常数-机器修复后,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,好吧,这真的很奇怪 我的Macbook坏了。苹果修复了它。新的逻辑板。现在我的Rails应用程序无法在此计算机上正确运行。当我从商店取回它时,我从git中取出了最新版本,运行了迁移(没有迁移),然后foreman start(也尝试了rails s)。现在在一组特定的路线上(对于某个资源丰富的控制器),我得到了以下信息: NameError异常:未初始化的常量Foo::Bar 其中,Bar是使用单表继承的Foo的子类。我的模型都没有名称空间。我的models文件夹没有子文件夹 class Foo

好吧,这真的很奇怪

我的Macbook坏了。苹果修复了它。新的逻辑板。现在我的Rails应用程序无法在此计算机上正确运行。当我从商店取回它时,我从git中取出了最新版本,运行了迁移(没有迁移),然后
foreman start
(也尝试了
rails s
)。现在在一组特定的路线上(对于某个资源丰富的控制器),我得到了以下信息:

NameError异常:未初始化的常量Foo::Bar

其中,Bar是使用单表继承的Foo的子类。我的模型都没有名称空间。我的
models
文件夹没有子文件夹

class Foo < ActiveRecord::Base
  ...
end

class Bar < Foo
  ...
end
class Foo
这些模型并不新鲜。在我的Mac电脑修好之前,它已经正常工作了很长一段时间。就在这一分钟,这段代码在Heroku的生产中运行,没有出现错误。它在我的备份开发机器上也运行良好。我仔细检查了所有环境是否都在相同版本的Rails和Ruby上


我很困惑。你知道会是什么吗?

我在备份开发箱上工作的想法是错误的。我的意思是它成功了,然后就没有了。这部分实际上有点雾

解决方案是将父类(
Foo
)更改为:

scope :some_scope, chain_of.other.scopes
为此:

scope :some_scope, -> { chain_of.other.scopes }
碰巧,作用域链中的最后一个引用子类(
Bar
),就像这样——这就是发生错误的地方:

Bar.inheritance_column
在同一个类中,除了这个作用域之外,我还有其他作用域,它们链接其他作用域而不在lambda内部。我仍然对此感到困惑。我只是通过反复尝试才解决了这个问题……一小步一小步地向后走,直到找到了那个快乐的地方