好的,这真的很奇怪......
我的Macbook破了。 Apple修复了它。新的逻辑板。现在我的Rails应用程序将无法在此计算机上正常运行。当我从商店拿回来的时候,我从git中取出了最新版本,进行了迁移(没有任何),然后foreman start
(仅尝试了rails s
)。现在在一组特定的路线上(对于某个资源丰富的控制器),我得到了这个:
NameError异常:未初始化的常量Foo :: Bar
其中Bar是使用单表继承的Foo的子类。我的模型都没有命名空间。我的models
文件夹没有子文件夹。
class Foo < ActiveRecord::Base
...
end
class Bar < Foo
...
end
这些模型并不新鲜。在我的Mac修复之前,它已经很好地工作了很长时间。在Heroku的生产过程中,这个确切的代码运行时没有错误。它在我的备份开发机器上运行良好。我仔细检查了所有环境都在相同版本的Rails和Ruby上。
我很神秘。不知道它会是什么???
答案 0 :(得分:0)
我在备份开发盒上工作时出错了。我的意思是它有效,然后它没有。这部分实际上有点模糊。
解决方案是更改父(Foo
)类:
scope :some_scope, chain_of.other.scopes
对此:
scope :some_scope, -> { chain_of.other.scopes }
实际上,范围链中的最后一个引用了子类(Bar
),就像这样 - 这是发生错误的地方:
Bar.inheritance_column
除了这个之外,我还有一个范围在同一个类中,它连接其他范围而不是在lambda中。我仍然对此感到困惑。我只是通过反复试验才解决它......小步走向后,直到我找到了幸福的地方。