Je dois changer le type de colonne de date en date/heure pour une application que je crée. Je me fiche des données car elles sont encore en développement.
Comment puis-je faire ceci?
D'abord dans votre terminal:
Rails g migration change_date_format_in_my_table
Puis dans votre fichier de migration:
Pour 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
De plus, si vous utilisez Rails 3 ou une version plus récente, vous n'avez pas à 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
Dans Rails 3.2 et Rails 4, Benjamin réponse courante a une syntaxe légèrement différente.
D'abord dans votre terminal:
$ Rails g migration change_date_format_in_my_table
Puis 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
Il existe une méthode change_column , exécutez-la simplement dans votre migration avec datetime comme nouveau type.
change_column(:my_table, :my_column, :my_new_type)
Autant que je sache, les migrations sont là pour tenter de remodeler les données qui vous tiennent à cœur (c’est-à-dire la production) lors de modifications de schéma. Donc, à moins que ce ne soit faux, et puisqu'il a déclaré ne pas se soucier des données, pourquoi ne pas simplement modifier le type de colonne dans la migration d'origine de date à date et refaire la migration? (J'espère que vous avez des tests :)).