2012-05-03 3 views
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 я получаю эту ошибку каждый раз, когда приложение загружается и доступно в браузере. Он также возникает при запуске тестов. Действительно странная часть состоит в том, что простое обновление заставляет приложение продолжать работу без дополнительной ошибки. Однако остановка сервера и его перезапуск заставляют его снова запускаться во время следующего доступа. Кажется, что это не происходит в одном месте. Различные методы на разных моделях или контроллерах можно увидеть в backtrace, когда эта ошибка срабатывает.Strange Rails 3.1+ после обновления: неопределенный метод 'parent_table_name'

Я попытался выполнить код с помощью отладчика, но он не срабатывает. Я пробовал поиск по этой ошибке и ничего не нашел. Я пробовал прогуливаться по задней линии, искал что-то необычное и пытался обновить старый код устаревшего кода, чтобы узнать, помогло ли это.

Кажется, что это как-то связано с моими ассоциациями, поэтому я искал ассоциации, которые не были базовыми и реорганизованы, чтобы сделать их стандартными, основными ассоциациями. У меня есть несколько других приложений Rails 3.1 и 3.2, и я не видел эту ошибку, используя любые обычные ассоциации, которые я использую. У меня были некоторые ассоциации habtm с дополнительными столбцами, поэтому я преобразовал их в has_many: путем создания модели объединения. У меня есть некоторые ассоциации с: условиями и: включает в себя. Это не то, что я обычно делаю, но я унаследовал это приложение от предыдущего разработчика.

Эта ошибка звонит в колокольчик с кем-нибудь? Любые подсказки или указатель, которые могли бы помочь мне отслеживать это, были бы замечательными.

ответ

1

Хорошо, я понял это. Это не имело ничего общего с чем-то странным в Rails. Один из предыдущих разработчиков приложений написал специальный метод делегата, который переопределял делегат модуля #. Как только я удалил этот код, все сработало нормально.

+0

Вы можете (и должны) просто отправить ответ в качестве ответа. :) На этот раз я отредактировал ваш комментарий в этом сообщении от вашего имени. –

Смежные вопросы