Вот мои модели:Как изменить поле внешнего ключа в Rails?
class Project < ActiveRecord::Base
has_many :gs_collectors, dependent: :destroy
class GsCollector < ActiveRecord::Base
belongs_to :project
has_one :application, dependent: :destroy
class Application < ActiveRecord::Base
belongs_to :gs_collector
Вот мои заводы:
factory :application do
....
association :gs_collector
association :dust_type
end
factory :gs_collector do
...
association :project
end
factory :project do
sequence(:name) { |n| "Project#{n}" }
contact_name 'John Customer'
end
Модель приложения используется для belong_to проекта, так что я просто использовал миграции для изменения PROJECT_ID к gs_collector_id в БД. Но, теперь я получаю эту ошибку при попытке запустить любого из моих тестов (даже на единицы/контроллерах, которые не имеют никакого отношения к модели приложения):
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'project' in 'field list': INSERT INTO `applications` (`project`, ....
Почему я получаю эту ошибку?
Если добавить эту строку обратно в моей модели Application:
belongs_to :project
Все хорошо работает снова. Но это больше не нужно.
Что мне здесь не хватает?
Вы уверены, что миграция прошла успешно? дважды проверьте, действительно ли схема db изменилась, и может быть перезапущен процесс, а затем снова проверить, также вы запустили db: migrate на вашем тестовом db? – Abid
Да, миграция прошла успешно. Я запустил db: migrate и db: test: prepare. – croceldon