在ROR迁移期间将列types从Date更改为DateTime

我需要将我的列types从date更改为date时间。 我不关心数据的发展。

我怎样才能做到这一点?

首先在你的terminal:

rails g migration change_date_format_in_my_table 

然后在您的迁移文件中:

对于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 

另外,如果您使用的是Rails 3或更新的版本,则不必使用updown方法。 你可以使用change

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

在Rails 3.2和Rails 4中,Benjamin的stream行答案有一个稍微不同的语法。

首先在你的terminal:

 $ rails g migration change_date_format_in_my_table 

然后在您的迁移文件中:

 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_column方法,只需在迁移时用datetime作为新types执行。

 change_column(:my_table, :my_column, :my_new_type) 

AFAIK,在进行模式更改时,迁移将试图重塑您关心的数据(即生产)。 所以除非这是错误的,而且因为他说他不关心数据,为什么不直接修改从date到date时间的原始迁移中的列types,然后重新运行迁移? (希望你有testing:))。