web-dev-qa-db-fra.com

Va retirer une colonne avec A Rails Migration Supprimer les index associés à la colonne

IN Rails 2, retirera une colonne avec A Rails Migration modifier également/supprimer des index associés à la colonne? Si non, et que vous devez également changer/Supprimer chaque index manuellement, ne devrait-il pas être automatisé?

Merci (d'un Rails Newbie)

49
Dexygen

De Rails 4 à la hausse, l'index supprime automatiquement avec la suppression de la colonne.

58
enter08

Pour clarifier, à l'intérieur d'une migration, la syntaxe pour supprimer un indice de 2 colonnes est la suivante

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

ou par nom, une pire option de mon point de vue

remove_index :actions, :name => "index_actions_on_user_id_and_action_name"
6
Maragues

Juste comme une prudence, alors que Rails 4 volonté Retirez l'index pour vous si vous supprimez la colonne, vous devez spécifier le type de colonne. Sans type de colonne, exécutant rake db:rollback va retourner

rake aborted!
StandardError: An error has occurred, all later migrations canceled:

remove_column is only reversible if given a type.

J'écessais avec la chute de colonnes essentielles étrangères indexées. Même en précisant index: true Dans le bloc de changement ne semblait pas rendre les colonnes réversibles sur la restauration.

5
Jim

Si vous souhaitez supprimer l'index, vous devez utiliser remove_index, si tu utilises remove_column Il supprime l'index mais vous ne pouvez pas exécuter Rake DB: Rollback. Comme Jim a mentionné.

remove_column is only reversible if given a type.
0
William Hu

In Rails> 3.2.16, la suppression de la colonne supprime l'index.

0
Mark Swardstrom