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 の奇妙なこととは何の関係もありませんでした。以前のアプリ開発者の 1 人が、Module#delegate をオーバーライドするカスタム デリゲート メソッドを作成していました。そのコードを削除すると、すべてが正常に機能しました。

于 2012-05-08T14:10:16.233 に答える