2009-02-04 12 views
25

Ich lese über Rails Armaturen in diesem guide (Danke, Trevorturk). Es scheint, dass Sie Klassen in einer Yaml-Datei definieren und automatisch in die test DB - cool geladen werden.Schienenbefestigungen - wie legen Sie Fremdschlüssel fest?

Aber wenn Sie angeben möchten, dass dieses Rezept zu diesem Kochbuch (oder was auch immer) gehört, wie machen Sie das?

Sollen die Werte für cookbook.id und recipe.cookbook_id manuell im Yaml-Code angegeben werden? (Nur ein Tipp - der Guide zeigt so etwas nicht.) Oder gibt es einen geeigneteren Weg?

Antwort

53

Sie sollten benannte Fixtures verwenden, die automatisch eine ID-Nummer für Sie generieren, für die Sie keine bereitstellen. Diese ID-Nummern sind im Wesentlichen ganzzahlige Hashes der von Ihnen verwendeten Zeichenfolge. Sie nicht die „_id“ hinzufügen, wenn Sie die angegebene Version Referenzierung sind:

# recipes.yml 
chicken_soup: 
    cookbook: my_recipes 

# cookbooks.yml 
my_recipes: 
    title: My Test Cookbook 
+0

In Ordnung, das hat tatsächlich funktioniert. Danke, Mann. – Ethan

+0

Wow, das ist viel einfacher als ich dachte :) Ich habe dumme Sachen wie 'client_id: <% = contacts (: dave) .id%>' versucht (was offensichtlich nicht funktioniert). – Skilldrick

+3

Wenn Sie eine ID haben, die anders als das Objekt benannt ist (z. B. my_cookbook_id), können Sie die Klasse des Objekts wie folgt angeben: 'my_cookbook: my_recipes (Cookbook)' –

1

Wenn Sie darüber hinaus eine viele zu viele Verein haben wollen (HABTM) Sie nur ein Feld für den Verein in der Halterung geben :

# recipes.yml 
chicken_soup: 
    cookbooks: [my_recipes, another_recipe] 
Verwandte Themen