2012-05-03 2 views
0

Вот мои модели:Как изменить поле внешнего ключа в 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 

Все хорошо работает снова. Но это больше не нужно.

Что мне здесь не хватает?

+0

Вы уверены, что миграция прошла успешно? дважды проверьте, действительно ли схема db изменилась, и может быть перезапущен процесс, а затем снова проверить, также вы запустили db: migrate на вашем тестовом db? – Abid

+0

Да, миграция прошла успешно. Я запустил db: migrate и db: test: prepare. – croceldon

ответ

0

Проблема была в том, что у меня был файл архива, который был создан генератором эшафотов. Как только я удалил файл приборов, все отлично поработало.

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