2011-12-19 8 views
0

Я сделал стандартный класс Active :: Record с полем user_id на нем, и, конечно же, изменились требования. Оказывается, мне нужно было удалить столбец «user_id» и вместо этого поставить столбец «email». Я решил, что просто заменил бы поле в файле миграции, а затем выполнил бы быстрый «rake db: migrate down/up» в этой версии, чтобы сделать обновление. Я даже закончил обновление db/schema.rb.Factory Girl отсутствует методы со схемой fiddling?

Нет Dice:

Failure/Error: ss = Factory(:model) 
undefined method `email=' for #<Model:0xb2cc288> 

Я могу использовать методы электронной геттер/сеттер в консоли или в службе хорошо - но завод девушка не похоже, чтобы получить подсказку. Это кеширование списка методов где-нибудь? (Подсказка: таблица mysql тоже выглядит хорошо)

ответ

0

Во-первых, в будущем старайтесь не менять существующие файлы миграции. Вы испортите больше, чем просто FactoryGirl, а именно, вы испортите настройки своих товарищей по команде. Изменение требований и все в порядке, вы просто делаете новую миграцию, которая отбрасывает столбец user_id и добавляет столбец электронной почты. Таким образом, эволюция модели данных будет записана в миграциях.

Для вашей конкретной проблемы, скорее всего, вы хотите запустить rake db: test: подготовить или, если это не сработает, полностью оставьте тестовую базу данных и перестройте ее.

+0

Да, это была предварительная регистрация, прежде чем что-либо делать, поэтому я подумал, что я в безопасности. rake db: test: подготовить сделал! Конечно ... Я переносил неправильную схему. Спасибо Срджану. – trevorgrayson

+0

Предварительная проверка - это, наверное, единственный раз, когда я сказал бы «все нормально, если вы измените миграцию». Единственная проблема, которую я вижу в этом, заключается в том, что она создает вредные привычки, вот и все. –

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