Je dois changer mon type de colonne de date en datetime pour une application que je crée. Je me fiche des données car elles sont toujours en cours de développement.
Comment puis-je faire ceci?
Je dois changer mon type de colonne de date en datetime pour une application que je crée. Je me fiche des données car elles sont toujours en cours de développement.
Comment puis-je faire ceci?
Tout d'abord dans votre terminal:
rails g migration change_date_format_in_my_table
Puis 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
change
méthode n'est pas utilisée à la place des méthodesup
etdown
, c'est parce que lachange
méthode ne prend pas en charge lachange_column
définition de migration .De plus, si vous utilisez Rails 3 ou une version plus récente, vous n'avez pas besoin d'utiliser les méthodes
up
etdown
. Vous pouvez simplement utiliserchange
:la source
This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.
Dans Rails 3.2 et Rails 4, la réponse populaire de Benjamin a une syntaxe légèrement différente.
Tout d'abord dans votre terminal:
Puis dans votre fichier de migration:
la source
Il existe une méthode change_column , il suffit de l'exécuter dans votre migration avec datetime comme nouveau type.
la source
AFAIK, les migrations sont là pour essayer de remodeler les données qui vous intéressent (c'est-à-dire la production) lorsque vous effectuez des modifications de schéma. Donc, à moins que cela ne soit faux, et puisqu'il a dit qu'il ne se souciait pas des données, pourquoi ne pas simplement modifier le type de colonne dans la migration d'origine de date à datetime et réexécuter la migration? (J'espère que vous avez des tests :)).
la source
rake db:migrate:reset
.