rails migrations has_and_belongs_to_many generate foreign create belongs_to add_column ruby-on-rails foreign-keys foreign-key-relationship auto-generate

ruby on rails - migrations - ¿Rails necesita restricciones a nivel de base de datos?



rails generate migration (2)

Las restricciones de la base de datos no son necesarias más que el uso de cinturones de seguridad en su automóvil. Puede conducir alrededor de todo lo que quiera y todo funcionará bien hasta que llegue un problema. El cinturón de seguridad (restricciones) lo mantiene a usted (los datos) a salvo.

Por lo tanto, es muy recomendable que cree restricciones para imponer la integridad de los datos en el nivel de la base de datos, ya que es muy probable que 1) interactúe con la base de datos en algún punto fuera de Rails y 2) cometa un error en su código que cause Datos inválidos.

Las restricciones de la base de datos pueden ser más laboriosas, pero ahorran mucho trabajo, especialmente cuando su código puede hacer suposiciones acerca de los datos y no tiene que hacer toneladas de verificaciones de validez.

La razón por la que ActiveRecord no admite claves externas fuera de la caja es porque está destinado a ser independiente de la base de datos, y las claves externas no son universalmente compatibles con todos los sistemas de bases de datos.

Tengo el mismo problema que en el siguiente post .

Así que me pregunto, ¿por qué Rails no admite la generación de claves externas de forma predeterminada? ¿No es necesario? ¿O se supone que debemos hacerlo manualmente?


Puede agregar soporte de clave externa con el complemento de Foreigner .

No todas las bases de datos compatibles con ActiveRecord admiten claves externas, por lo que el marco de Rails no lo incluye como una característica principal.

Nota: lo anterior ya no es preciso, ya que Rails agregó soporte FK en 4.2.