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)
De Rails 4 à la hausse, l'index supprime automatiquement avec la suppression de la colonne.
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"
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.
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.
In Rails> 3.2.16, la suppression de la colonne supprime l'index.