37 votes

Est-il possible de renommer un index à l'aide d'une migration de rails?

Je sais qu'il y a une transformation rename_column , mais il semble que rename_index n'existe pas.

Dois-je utiliser remove_index et add_index place?

61voto

Nothus Points 336

rename_index doivent recevoir des chaînes et non des symboles.

 rename_index :table_name, 'old_name', 'new_name'
 

Je me suis gratté la tête pendant un moment en essayant de renommer une table et ses index. Rails 3.2.3 et MySQL.

41voto

Guillaume Points 377

Rails 3 fournit un raccourci pour renommer un index:

 rename_index :table_name, :old_name, :new_name
 

http://guides.rubyonrails.org/migrations.html

Soit dit en passant, cela ne fait pas plus que supprimer l'ancien et ajouter le nouveau:

http://apidock.com/rails/v2.3.8/ActiveRecord/ConnectionAdapters/SchemaStatements/rename_index

3voto

robw Points 1562

Selon l' API , utiliser remove_index et add_index est le seul moyen d'y parvenir.

1voto

Toby Hede Points 22128

Vous pouvez également exécuter du SQL arbitraire dans vos migrations.

Nous avons quelques méthodes d'assistance qui ajoutent des clés étrangères à nos tables:

 def add_foreign_key(from_table, from_column, to_table)
  constraint_name = "fk_#{from_table}_#{from_column}"

  execute %{alter table #{from_table}
            add constraint #{constraint_name}
            foreign key (#{from_column})
            references #{to_table}(id)
           }
  end
 

Vous pouvez utiliser n'importe quel SQL pris en charge par votre base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X