J'ai une table 'utilisateurs' avec colonne 'email'. Auparavant, il était unique (avec index), mais une nouvelle exigence est d'autoriser les nils.
Existe-t-il une meilleure solution que:
remove_index :users, :email
add_index :users, :email
?
Initialement, il a été ajouté avec l'option unique:
add_index :users, :email, :unique => true
Je dirais que vous avez la bonne solution car l'index devra être régénéré, d'où la raison pour laquelle il n'y a pas de update_index
.
Hé, voici une migration que je viens d'écrire et qui fonctionne plutôt bien. J'ai une table 'scraped_episodes' avec une colonne qui est varchar (255) 'enceinteUrl'. J'ai besoin de faire des URL plus longues à longues donc c'est ce que j'ai utilisé (Rails 3.2.13)
class ExpandEnclosureUrl < ActiveRecord::Migration
def up
# remove index cuz we need to
remove_index :scraped_episodes, :enclosureUrl
# change length to 2048 characters
change_column :scraped_episodes, :enclosureUrl, :text, :limit=>2048
# redo this index to only index the first 255 chars
add_index :scraped_episodes, :enclosureUrl, :length => 255
end
def down
# remove index cuz we need to
remove_index :scraped_episodes, :enclosureUrl
# use the same settings at when i first created this field
change_column :scraped_episodes, :enclosureUrl, :string, :limit=>nil
# use the same settings as when i first added this index
add_index :scraped_episodes, :enclosureUrl
end
end