2011-01-19 14 views

Respuesta

8

El resultado es el mismo para su caso específico; estás en lo correcto. Pero references permite una opción :polymorphic => true que creará automáticamente la columna foo_type como una cadena en la tabla.

Semánticamente, references es mejor si está tratando de hacer que sus migraciones reflejen mejor las relaciones entre tablas en la base de datos.

2

@ La respuesta de Mike explica muy bien el significado de references. Sin embargo, a menudo es mejor no acoplar sus migraciones demasiado cerca de sus asociaciones de AR. En particular, puede acceder a todo tipo de pickle cuando se trata de implementar su aplicación si ejecuta migraciones antes de actualizar la aplicación desde el control de versiones, por ejemplo. No es un gran problema hasta que te muerde :-)

+0

¿estás sugiriendo que las referencias pueden ser peligrosas? ¿Puedes dar un ejemplo del tipo de pepinillo en el que podría meterme? – kdt

+1

Normalmente, esto puede provocar problemas si sus migraciones y actualizaciones de código de modelo no están en la misma confirmación de control de versión o, por ejemplo, si cambia de opinión sobre la asociación más adelante y necesita actualizar una máquina que está demasiado atrasada tu desarrollo Por lo tanto, tendría migration1 que utiliza 'references' y, por lo tanto, determina el nombre de la clave externa de las asociaciones del modelo AR. Más tarde decide deshacer esa migración con una nueva y también eliminar la asociación de su código. Ahora, cualquier máquina cuyo esquema tenga 2 generaciones de antigüedad no puede ejecutar las migraciones porque la asociación se ha ido. – noodl

+0

Sé que es un poco intrincado. No debería preocuparme hasta que te lastime realmente :-) – noodl

Cuestiones relacionadas