web-dev-qa-db-fra.com

Rails 4 migration: comment réorganiser les colonnes

J'ai appris ça add_column a un :after option pour définir l'emplacement d'insertion de la colonne. Dommage que je l'ai appris: après avoir ajouté un tas.

Comment puis-je écrire une migration pour simplement réorganiser les colonnes?

39
emersonthis

Tu peux appeler change_column, mais vous devez répéter le type de colonne (copiez-le et collez-le simplement à partir de votre autre migration):

def up
  change_column :your_table, :some_column, :integer, after: :other_column
end

Ou si vous devez réorganiser plusieurs colonnes dans une même table:

def up
  change_table :your_table do |t|
    t.change :some_column, :integer, after: :other_column
    # ...
  end
end

change_column appels ALTER TABLE sous la capuche. Depuis MySQL documentation :

Vous pouvez également utiliser FIRST et AFTER dans CHANGE ou MODIFY pour réorganiser les colonnes d'une table.

59
Stefan