2016-07-04 3 views
1

을 구축 할 수있는 공장을 만들기 FactoryGirl그 모델 사이의 관계는 부모와 쉬운 방법에 조부모와 함께 flight_sku을 만들 수있는 방법을 <code>airport HAS_MANY flights</code></li> <li><code>flight HAS_MANY flight_skus</code></li> </ul> <p></p> <ul> <li>이다 중첩 된 자원

before(:all) do 
    @airports = AIRPORTS.collect{|airport| FG.create(:airport, code: airport)} 
    @flight = FG.create(:flight, from_airport: @airports[0], to_airport: @airports[3]) 
    @sku = FG.create(:flight_sku, flight: @flight) 
    @flight_2 = FG.create(:flight, from_airport: @airports[1], to_airport: @airports[2]) 
    @sku_2 = FG.create(:flight_sku, flight_id: @flight_2.id) 
    end 

업데이트 : (작동하지 않음 airport 및 협회가 설정 한 상기와 새로운 flight_sku와 함께, 당신은 flight을 만들 것 build(:flight_sku)를 호출하여 rsion_

NoMethodError: 
    undefined method `single_room=' for #<Room:0x007fcbed2e3d60> 
    Did you mean? singleton_method 



factory :create_rooms_list do 
    single_room 
    twin_room 
end 

factory :single_room do 
    name "單人房" 
    guests 1 
end 

factory :twin_room do 
    name "雙人房" 
    guests 2 
end 
+0

내 도움이 되었다면 올바른 대답으로 표시하십시오. – davidwessman

+0

: 당신은 무엇을하고 싶은가요? creat_rooms_list? – davidwessman

답변

2
factory :flight_sku do 
    other_fields 
    flight 
end 

factory :flight do 
    other_fields 
    airport 
end 

factory :airport do 
    other_fields 
end 

.

create(:flight_sku)을 호출하면 모두 생성됩니다.

build_stubbed(:flight_sku)을 호출하면 flight_sku의 스터브 리소스와 두 연결을 모두 만듭니다.

+0

당신의 솔루션이 이제 작동합니다. create'create_rooms_list'를 호출합니다. – user3675188