2016-07-12 2 views
0

나중에 보드 분석을 위해 JSON에서 일부 정보를 저장하는 팩토리 메소드를 빌드하고 있습니다.공장 아가씨 : 같은 객체를 여러 번 사용하십시오.

이 보드는 보드 주위에 도금이 생기므로 JSON에는 각 경계선에 대한 ID가 포함됩니다.

예를 들어, 우리는 도금 1, 2

을 가질 수 그리고는 다음과 같이 보일 수 있습니다 보드를 생성해야합니다

width: 500 
height: 500 
platings: {"up": 1, left: 2, right: 1} 

그래서 내가 한 번에 id 이상을 가질 수 있습니다 공장이지만 도금을 할 때마다 다른 ID를 얻을 것이므로 나는 그것을 할 방법이 없습니다.

이것은 내가

Factory :medium_board do 
    width 500 
    height 500 
    platings {{ 
    "up": create(:plating).id, #id: 1 OK 
    "left": create(:another_plating).uuid, #id: 2, OK 
    "right": create(:plating).uuid #id: 3, NOT OK, should have been 1. 
    }} 
end 

내가 건너 뛰는 오전 근본적인 무언가가 거기를하려고 노력 무슨의 예입니다? 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 최고

답변

2

여기에 after 후크를 사용합니다. 다음과 같은 내용 :

factory :medium_board do 

    after :build do |board| 
    plating1 = create(:plating) 
    plating2 = create(:another_plating) 

    board.platings = { 
     up: plating1.id, 
     left: plating2.id, 
     right: plating1.id, 
    } 
    end 
end