2
undefined method `parent_table_name' for class `ActiveRecord::Associations::JoinDependency::JoinAssociation'

我最近将我们的应用程序从 Rails 2.3.12 升级到 Rails 3.0.12。我清除了所有弃用警告,然后继续升级到 Rails 3.1.4。升级到 Rails 3.1.4 后,我现在每次加载应用程序并在浏览器中访问时都会收到此错误。运行测试时也会引发它。真正奇怪的是,简单的刷新会导致应用程序继续前进而不会出现另一个错误。但是,停止服务器并重新启动它会导致它在下一次访问期间再次触发。它似乎也没有发生在一个地方。触发此错误时,可以在回溯中看到不同模型或控制器上的不同方法。

我曾尝试使用调试器单步执行代码,但它不会触发。我试过用谷歌搜索这个错误,但什么也没找到。我尝试通过回溯寻找任何不寻常的东西,并尝试更新一些旧的遗留代码,看看是否有帮助。

似乎它与我的关联有关,所以我寻找任何不是基本的关联并重构它们以使其成为标准的基本关联。我有几个其他 Rails 3.1 和 3.2 应用程序,使用我使用的任何常用关联都没有看到此错误。我有一些与额外列的 habtm 关联,因此我通过创建连接模型将它们转换为 has_many :through 。我与 :conditions 和 :includes 有一些关联。这不是我通常做的事情,但我从以前的开发人员那里继承了这个应用程序。

这个错误是否对任何人敲响了警钟?任何可以帮助我追踪它的提示或指针都会很棒。

4

1 回答 1

1

好的,我想通了。它与 Rails 中的任何奇怪的东西无关。以前的应用程序开发人员之一编写了一个覆盖 Module#delegate 的自定义委托方法。删除该代码后,一切正常。

于 2012-05-08T14:10:16.233 回答