AssociationTypeMismatch с ожидаемым типом во вложенных модельных формах

Я получаю это исключение при создании формы вложенной модели:

ActiveRecord::AssociationTypeMismatch in RecipesController#update 
  Ingredient(#35624480) expected, got Ingredient(#34767560)

Используемые модели - Рецепт и Ингредиент. Рецепт has_many и accept_nested_attributes_for: ингредиенты, которые принадлежит_to: recipe.

Я получаю это исключение при попытке _destroy (= 1) одного из ранее существовавших ингредиентов во вложенной форме ингредиентов для редактирования / обновления рецепта.

В этом мало смысла, в основном потому, что типы ассоциаций такие, как ожидалось (по собственному признанию исключения).

Еще меньше смысла в том, что он отлично работает в функциональном тесте.

Кроме того, иногда это срабатывает, если я повторно отправлю форму (через обновление браузера при обновлении). Он также будет работать, если я перезапущу веб-сервер (разработка).

Есть идеи, что может быть причиной этого, или что я должен искать?


person Craig Walker    schedule 24.05.2010    source источник
comment
Вы сравнивали записи журнала для первого (неудачного) и второго (успешного) обновления?   -  person zetetic    schedule 25.05.2010
comment
Нет, но это хорошая идея. Спасибо.   -  person Craig Walker    schedule 25.05.2010
comment
Журналы были идентичны до удаления; в неудачном журнале есть исключение, в успешном - SQL для удаления.   -  person Craig Walker    schedule 25.05.2010


Ответы (2)


обычно это означает, что «rails не удалось перезагрузить один раз» в файлах среды / xxx, вы можете изменить его, чтобы он не перезагружался, или разрешить перезагрузку.

person rogerdpack    schedule 24.05.2010
comment
Привет, @rogerdpack! вы имеете в виду свойство config.cache_classes? - person Craig Walker; 25.05.2010
comment
Это определенно похоже на проблему загрузки классов; Я переключил config.cache_classes на true в процессе разработки, и проблема исчезла. - person Craig Walker; 25.05.2010
comment
Похоже, ты это починил. Для меня это означало, что мои плагины не перезагружались правильно или странно ... - person rogerdpack; 28.05.2010

Иногда это можно исправить, добавив правильные требования, начиная с того места, где класс используется в вашем коде.

person Torsten    schedule 31.12.2010