自动加载常量时检测到循环依赖性

时间:2013-09-20 16:00:55

标签: ruby ruby-on-rails-4 rails-activerecord

我将Rails从版本3.1.2(工作正常)升级到4.0,并且遇到了以下错误:

circular dependency detected while autoloading constant Foo

我创建了一个类ProductFactory,在那里我实例化了不同的模型。例如:

p = Foo.new(params)

模型"Foo"并不总是ActiveRecord。任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

最好我知道,循环依赖错误消息通常在级联包含错误时通过在完全加载之前递归地要求文件而发生,例如:

# File A:
require 'B'
module Foo; end

# File B:
require 'A'
module Foo; end

这种情况有可能是你最终会遇到的吗?

答案 1 :(得分:3)

我遇到了这个错误,因为我手动重命名了控制器,路由等等,忘了在文件的第一行重命名它。

被命名为

类AController< ApplicationController中

而不是

类ARenamedController< ApplicationController中

我已经离开并且个别地重命名了所有其他文件。

不是我所知道的最佳实践,但我正在学习并弄清楚它,并在这种情况下创造了这个人正在谈论的错误。所以,如果你像我一样通过谷歌来到这里,那就是我的解决方案。

答案 2 :(得分:2)

当您更改Rails的版本时,通常会发生此类问题。你可能没有按正确的顺序更新宝石。