rails migrations foreign belong association add_column mysql ruby-on-rails foreign-keys

mysql - migrations - rails db



Soporte para restricción de clave externa en Rails (4)

En Ruby on Rails, ¿cómo agregar restricción de clave externa en la migración?


Aquí hay una solución basada en gem que incluye soporte para agregar y eliminar restricciones de clave externa, no falla con sqlite y funciona correctamente con los archivos schema.rb:

http://github.com/matthuhiggins/foreigner


Esta es una actualización de la gema matthuhiggins-foreign: http://github.com/sparkfly/foreigner

caracteristicas:

  • cobertura de rspec, probado contra PostgreSQL 8.3.9 y MySQL 5.0.90
  • Soporte de migración
  • soporte de schema.rb

Las versiones futuras incluirán restricciones CHECK para PostgreSQL, que es necesaria para implementar la herencia de tablas múltiples.


¿Sería suficiente con agregar lo siguiente, por ejemplo, con Products y modelos de User ?

add_index :products, :user_id


AFAIK, no hay soporte integrado para eso, pero hay varios complementos que lo ayudan con eso. También puede agregarlos manualmente a sus archivos de migración, simplemente use el método de ejecución para eso, por ej. (Muestra de la API de Rails):

class MakeJoinUnique < ActiveRecord::Migration def self.up execute "ALTER TABLE `pages_linked_pages` ADD UNIQUE `page_id_linked_page_id` (`page_id`,`linked_page_id`)" end def self.down execute "ALTER TABLE `pages_linked_pages` DROP INDEX `page_id_linked_page_id`" end end