Respostas:
Primeiro no seu terminal:
rails g migration change_date_format_in_my_table
Em seguida, no seu arquivo de migração:
Para 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étodo não é usado em vez dos métodos up
e down
, é porque o change
método não suporta a change_column
definição de migração .
Além disso, se você estiver usando o Rails 3 ou mais recente, não precisará usar os métodos up
e down
. Você pode apenas 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.
No Rails 3.2 e Rails 4, a resposta popular de Benjamin tem uma sintaxe um pouco diferente.
Primeiro no seu terminal:
$ rails g migration change_date_format_in_my_table
Em seguida, no seu arquivo de migração:
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
Existe um método change_column , basta executá-lo na sua migração com datetime como um novo tipo.
change_column(:my_table, :my_column, :my_new_type)
AFAIK, existem migrações para tentar remodelar os dados importantes (por exemplo, produção) ao fazer alterações no esquema. Portanto, a menos que isso esteja errado, e como ele disse que não se importa com os dados, por que não modificar o tipo de coluna na migração original de data para data e hora e executar novamente a migração? (Espero que você tenha testes :)).
rake db:migrate:reset
é para isso.