Эта проблема действительно теряет меня.
У меня есть модель для аутентификации: user. У меня есть модель для комментариев: comment. У меня есть модель, которую можно комментировать: weburl.
Weburl 1..* Комментарий Weburl *..1 Комментарий пользователя *..1 Пользователь
Проблема, с которой я сталкиваюсь, не поддается проверке (все мои тесты проходят) и не происходит постоянно. Обычно это происходит во второй раз, когда я генерирую одно и то же действие контроллера.
Проблема заключается в том, что мой пользователь связан с моим комментарием, и извлечение через comment.user становится НЕ РАВНЫМ для current_user, даже если атрибуты одинаковы. Например :
(comment.user.login == current_user.login == User.find(1).login)
==> True
(comment.user.id)
==> Unknown in the current context
(comment.user.class == User == current_user.class)
==> True
Я дважды проверил отношения belongs_to
и has_one has_many
в своих моделях.
Я предполагаю, что это как-то связано с кэшированием, я сталкиваюсь с этим в своей среде разработки, но не в своих автоматических тестах и не в производстве.
хотелось бы понять в чем дело.
Спасибо
РЕДАКТИРОВАНИЕ Добавление моего файла инициализации development.rb
config.cache_classes = false #Set to true for prod
config.whiny_nils = true
config.action_controller.consider_all_requests_local = true #Set to false for prod
config.action_view.debug_rjs = true
config.action_controller.perform_caching = false #Set to true for prod
EDIT #2 Если config.cache_classes имеет значение true, ошибка не возникает
Док говорит: # В среде разработки код вашего приложения перезагружается при каждом запросе. Это замедляет время отклика, но идеально подходит для разработки, поскольку вам не нужно перезапускать веб-сервер при внесении изменений в код.
нашел следующий билет, возможно, он взаимосвязан http://dev.rubyonrails.org/ticket/10722 Также проблема возникает с Mongrel и WebRick.