389 votes

Colonne Rails migration for change

Nous avons la syntaxe script/generate migration add_fieldname_to_tablename fieldname:datatype pour ajouter de nouvelles colonnes à un modèle.

Sur la même ligne, avons-nous un script / générer pour changer le type de données d'une colonne? Ou devrais-je écrire sql directement dans ma migration vanille?

Je veux changer une colonne de datetime à ce jour.

Merci

639voto

Alex Korban Points 7819

Je pense que change_column :table_name, :column_name, :date devrait fonctionner.

111voto

John Points 4635

Vous pouvez également utiliser un bloc si vous avez plusieurs colonnes de changer dans un tableau.

Exemple :

Consultez la documentation de l’API sur la classe de Table pour plus de détails.

99voto

Ryan Points 2182

Je ne suis pas au courant si vous pouvez créer une migration à partir de la ligne de commande pour faire tout cela, mais vous pouvez créer une nouvelle migration, puis modifiez la migration pour effectuer cette tâche.

Si tablename est le nom de votre table, fieldname est le nom de votre domaine et que vous souhaitez modifier à partir d'un datetime à jour, vous pouvez écrire une migration pour ce faire.

Vous pouvez créer une nouvelle migration avec:

rails g migration change_data_type_for_fieldname

Puis modifiez la migration d'utiliser change_table:

class ChangeDataTypeForFieldname < ActiveRecord::Migration
  def self.up
    change_table :tablename do |t|
      t.change :fieldname, :date
    end
  end
  def self.down
    change_table :tablename do |t|
      t.change :fieldname, :datetime
    end
  end
end

Puis exécuter la migration:

rake db:migrate

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