2016-07-12 20 views
0

Ich baue eine Factory-Methode, die einige Informationen in JSON für spätere Analyse in einer App speichert, die Boards schneidet.Factory Girl: Benutze dasselbe Objekt mehrmals

Diese Platinen werden um sie herum platiert, so dass der JSON die IDs für jeden seiner Boarder enthält.

Zum Beispiel können wir Platings 1 und 2

Und ich brauche Bretter zu erzeugen, die wie folgt aussehen:

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

So kann ich auf einem einzigen mehr als einmal eine ID Factory, aber ich habe keine Möglichkeit es zu tun, da ich jedes Mal, wenn ich eine Plattierung erstelle, eine andere ID bekomme.

Dies ist ein Beispiel dafür, was ich versucht habe,

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 

Gibt es etwas Grundsätzliches zu tun, dass ich das Überspringen bin? Welches ist der beste Weg, dies zu tun? Am besten

Antwort

2

Ich würde hier einen after Haken verwenden. Etwas wie dieses:

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