Answers:
首先在您的终端:
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或更高版本,则不必使用up
和down
方法。您可以使用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.
在Rails 3.2和Rails 4中,本杰明的流行答案语法略有不同。
首先在您的终端:
$ 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作为新类型执行即可。
change_column(:my_table, :my_column, :my_new_type)
AFAIK,进行模式更改时,可以通过迁移来重塑您关心的数据(即生产数据)。因此,除非那是错误的,并且因为他确实说过他不关心数据,所以为什么不修改从日期到日期时间的原始迁移中的列类型并重新运行迁移呢?(希望您有测试:)。
rake db:migrate:reset
目的。