升级后出现奇怪的Rails 3.1+错误:未定义的方法'parent_table_name'

时间:2012-05-03 04:02:55

标签: ruby-on-rails exception

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:通过创建连接模型。我有一些关联:条件和:包括在他们身上。这不是我通常做的事情,但我从以前的开发者那里继承了这个应用程序。

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

1 个答案:

答案 0 :(得分:1)

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