2009-02-04 19 views
25

Estoy leyendo acerca de los accesorios Rails en este guide (gracias, trevorturk). Parece que defines clases en un archivo Yaml y se cargan automáticamente en el test DB - cool.Fijaciones de rieles: ¿cómo configura las llaves foráneas?

Pero si quiere especificar que esta receta pertenece a ese libro de cocina (o lo que sea) ¿cómo lo hace?

¿Se supone que debe especificar los valores de cookbook.id y recipe.cookbook_id a mano en el código de Yaml? (Solo supongo que la guía no muestra nada de eso). ¿O hay una forma más adecuada?

Respuesta

53

Debe usar accesorios con nombre, que automáticamente generan un número de identificación donde usted no proporciona uno. Estos números de identificación son esencialmente hashes enteros de cualquier cadena que utilice. No añada el "_id" si se está haciendo referencia a la versión que se llama:

# recipes.yml 
chicken_soup: 
    cookbook: my_recipes 

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

De acuerdo, realmente funcionó. Gracias hombre. – Ethan

+0

Wow, eso es mucho más simple de lo que pensé que sería :) Estaba intentando cosas tontas como 'client_id: <% = contacts (: dave) .id%>' (que obviamente no funciona). – Skilldrick

+3

Si tiene un ID con un nombre diferente al del objeto (por ejemplo, my_cookbook_id), puede especificar la clase del objeto como lo siguiente: 'my_cookbook: my_recipes (Cookbook)' –

1

Además, si desea tener una asociación de muchos a muchos (HABTM) que acaba de dar una matriz para la asociación en el accesorio :

# recipes.yml 
chicken_soup: 
    cookbooks: [my_recipes, another_recipe] 
Cuestiones relacionadas