references rails migrations delete create ruby-on-rails rails-migrations

ruby-on-rails - migrations - rails references



Eliminar una columna con una migración de Rails eliminar los índices asociados con la columna (6)

Desde Rails 4 hacia arriba, el índice se elimina automáticamente con la eliminación de la columna.

En Rails 2, ¿la eliminación de una columna con una migración de Rails también cambiará / eliminará los índices asociados con la columna? Si no es así, y en su lugar también tiene que cambiar / eliminar cada índice manualmente, ¿no debería ser automatizado?

Gracias (de un novato de Rails)


En Rails> 3.2.16, eliminar la columna elimina el índice.


Para aclarar, dentro de una migración, la sintaxis para eliminar un índice de 2 columnas es la siguiente

remove_index :actions, :column => [:user_id,:action_name]

o por nombre, una peor opción desde mi punto de vista

remove_index :actions, :name => "index_actions_on_user_id_and_action_name"


Si desea eliminar el índice, debe usar remove_index ; si usa remove_column , elimina el índice, pero no puede ejecutar rake db: rollback. Como Jim mencionó.

remove_column is only reversible if given a type.


Solo como precaución, mientras que Rails 4 eliminará el índice por usted si elimina la columna, debe especificar el tipo de columna. Sin un tipo de columna, ejecutar rake db:rollback volverá

rake aborted! StandardError: An error has occurred, all later migrations canceled: remove_column is only reversible if given a type.

Estaba experimentando con la caída de columnas de clave externa que fueron indexadas. Incluso al especificar el index: true en el bloque de cambio no parece que las columnas sean reversibles al deshacer.


No, lamentablemente tiene que eliminar el índice manualmente desde dentro de su migración usando el método remove_index .