我需要将我的列类型从日期更改为我正在制作的应用的日期时间。我不关心数据,因为它仍在开发中。
我该怎么做?
答案 0 :(得分:497)
首先在您的终端:
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
答案 1 :(得分:77)
此外,如果您使用的是Rails 3或更新版本,则不必使用up
和down
方法。您可以使用change
:
class ChangeFormatInMyTable < ActiveRecord::Migration
def change
change_column :my_table, :my_column, :my_new_type
end
end
答案 2 :(得分:39)
在Rails 3.2和Rails 4中,Benjamin的popular answer语法略有不同。
首先在您的终端:
$ 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
答案 3 :(得分:23)
有一个change_column方法,只需在迁移过程中执行它,并将datetime作为新类型。
change_column(:my_table, :my_column, :my_new_type)
答案 4 :(得分:1)
AFAIK,迁移可以在进行架构更改时尝试重塑您关心的数据(即生产)。因此,除非这是错误的,并且因为他确实说他不关心数据,为什么不在原始迁移中修改从日期到日期时间的列类型并重新运行迁移? (希望你有测试:))。