223 votes

La migration ROR modifie un type de colonne de Date à DateTime

Je dois changer mon type de colonne de date à date-heure pour une application que je fais. Comment puis-je faire ceci? Je ne me soucie pas de la donnée est encore en cours de développement. J'utilise mySQL.

TIA

504voto

apneadiving Points 64660

D'abord dans votre terminal:

 rails g migration change_date_format_in_my_table
 

Ensuite, dans votre fichier de migration:

Pour les rails> = 3.2:

 class ChangeDateFormatInMyTable < ActiveRecord::Migration
  def up
    change_column :my_table, :my_column, :datetime
  end

  def down
    change_column :my_table, :my_column, :date
  end
end
 

77voto

Lee McAlilly Points 3533

En outre, si vous utilisez Rails 3, vous n'avez pas besoin d'utiliser les méthodes up et down . Vous pouvez simplement utiliser change :

 class ChangeFormatInMyTable < ActiveRecord::Migration
  def change
    change_column :my_table, :my_column, :my_new_type
  end
end
 

41voto

Thomas Klemm Points 4335

Dans Rails 3.2 et Rails 4, la réponse populaire de Benjamin a une syntaxe légèrement différente.

D'abord dans votre terminal:

 $ rails g migration change_date_format_in_my_table
 

Ensuite, dans votre fichier de migration:

 class ChangeDateFormatInMyTable < ActiveRecord::Migration
  def up
   change_column :my_table, :my_column, :datetime
  end

  def down
   change_column :my_table, :my_column, :date
  end
end
 

23voto

Nikita Rybak Points 36641

Il existe une méthode change_column , exécutez-la simplement dans votre migration avec datetime en tant que nouveau type.

 change_column(:my_table, :my_column, :my_new_type)
 

1voto

fakeleft Points 903

TOUJOURS, les migrations sont là pour essayer de remodeler les données qui vous intéressent (c'est-à-dire la production) lors des changements de schéma. Donc, à moins que ce soit faux, et puisqu'il a dit qu'il ne se soucie pas des données, pourquoi ne pas simplement modifier le type de colonne dans la migration d'origine de date à date et réexécuter la migration? (J'espère que vous avez des tests :)).

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