146 votes

Rails : Ajouter un index après avoir ajouté une colonne

Supposons que j'ai créé une table table dans une application Rails. Quelque temps plus tard, j'ajoute une colonne qui fonctionne :

rails generate migration AddUser_idColumnToTable user_id:string. 

Puis je réalise que je dois ajouter user_id comme un index. Je connais le add_index mais où cette méthode doit-elle être appelée ? Suis-je censé exécuter une migration (si oui, laquelle ?), puis ajouter à la main cette méthode ?

2voto

theabhisheksoni Points 81

Pour ceux qui utilisent une base de données postgresql et sont confrontés à une erreur.

StandardError: An error has occurred, this and all later migrations canceled:

=== Dangerous operation detected #strong_migrations ===

Adding an index non-concurrently blocks writes

veuillez vous référer cet article

exemple :

class AddAncestryToWasteCodes < ActiveRecord::Migration[6.0]
  disable_ddl_transaction!

  def change
    add_column :waste_codes, :ancestry, :string
    add_index :waste_codes, :ancestry, algorithm: :concurrently
  end
end

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