2013-04-29 3 views
1

Я принял приложение Rails и пытаюсь выполнить некоторые тесты модели; Я использую FactoryGirl в первый раз, так что это может быть вопрос начинающих.factory_girl - как создать объект в определении другого объекта

Существует модель, называемая object_connection, которая связывает две части информации. Он отлично работает в разработке, но относится к food_item и drink_item, но не имеет ассоциации. Проблема в том, что каждый раз, когда я запускаю спецификацию, эти два запуска create запускаются. Я хотел бы получить простой завод, чтобы создать это, но следующий не работает:

FactoryGirl.define do 
    factory :test_object_connection, class: ObjectConnection do 
    m=FactoryGirl.create :menu_item 
    fi=FactoryGirl.create(:test_food_item, menu_header_id: 1, menu_id: 1) 
    food_id fi.id 
    food_location_id fi.location_id 
    drink_id m.id 
    end 
end 

Я пытался делать раньше (: создать), но это, похоже, не работает. Я знаю, что в идеале должна быть ассоциация, но я предпочел бы просто правильно проверить этот тест, а затем предложить эти изменения. Каким будет правильный способ создания локальных переменных при создании фабрики?

ТНХ

+0

Я полагаю, '' food', food_location' и '' drink' являются belongs_to' ассоциации в ObjectConnection , Я прав? – kiddorails

+0

Желаю :-) Нат в этот момент. Они управляются вручную и ищут модели через ассоциации. Одна из проблем заключается в том, что еда и напитки производятся из одного стола. Думаю, лучший способ сделать это, поскольку в настоящее время это либо/или для двух предметов, но может быть больше в будущем. – timpone

ответ

0

Я не уверен, что это правильный путь, но работал для меня (через TestFoodItem.last.location_id).

FactoryGirl.define сделать завод: test_object_connection, класс: ObjectConnection сделать

food_id   { FactoryGirl.create(:test_food_item, menu_header_id: 1, menu_id: 1).id } 

food_location_id { TestFoodItem.last.location_id } 

drink_id   { FactoryGirl.create(:menu_item).id } 

конец конец

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