Respuestas:
Primero en tu terminal:
rails g migration change_date_format_in_my_table
Luego, en su archivo de migración:
Para rieles> = 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
no se usa un solo método en lugar de los métodos up
y down
, es porque el change
método no admite la change_column
definición de migración .
Además, si está utilizando Rails 3 o más reciente, no tiene que usar los métodos up
y down
. Solo puedes usar change
:
class ChangeFormatInMyTable < ActiveRecord::Migration
def change
change_column :my_table, :my_column, :my_new_type
end
end
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.
En Rails 3.2 y Rails 4, la respuesta popular de Benjamin tiene una sintaxis ligeramente diferente.
Primero en tu terminal:
$ rails g migration change_date_format_in_my_table
Luego, en su archivo de migración:
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
Hay un método change_column , simplemente ejecútelo en su migración con datetime como un nuevo tipo.
change_column(:my_table, :my_column, :my_new_type)
AFAIK, las migraciones están ahí para tratar de remodelar los datos que le interesan (es decir, la producción) al realizar cambios de esquema. Entonces, a menos que eso esté mal, y dado que dijo que no le importan los datos, ¿por qué no simplemente modificar el tipo de columna en la migración original de fecha a fecha y volver a ejecutar la migración? (Espero que tengas pruebas :)).
rake db:migrate:reset
están.