3

我将 Rails 从版本 3.1.2(运行良好)升级到 4.0,并遇到以下错误:

circular dependency detected while autoloading constant Foo

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

p = Foo.new(params)

该模型"Foo"并不总是一个 ActiveRecord。谁能帮我解决这个问题?

4

3 回答 3

3

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

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

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

你最终会遇到这种情况吗?

于 2013-09-26T15:36:30.987 回答
3

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

被命名为

类 AController < 应用控制器

代替

类 ANamedController < ApplicationController

我已经单独重命名了所有其他文件。

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

于 2014-02-20T07:25:07.677 回答
2

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

于 2013-09-30T09:50:31.197 回答