我需要为我正在制作的应用程序更改我的列类型从日期到日期时间。我不关心数据,因为它仍在开发中。
我该怎么做呢?
我需要为我正在制作的应用程序更改我的列类型从日期到日期时间。我不关心数据,因为它仍在开发中。
我该怎么做呢?
这里有一个change_column方法,只需在迁移中使用datetime作为新类型执行它。
change_column(:my_table, :my_column, :my_new_type)
首先在您的终端:
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
在Rails 3.2和Rails 4中,Benjamin的流行答案在语法上略有不同。
首先在您的终端:
$ 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
AFAIK,在进行模式更改时,迁移是为了试图重塑您所关心的数据(即生产)。因此,除非这是错误的,而且既然他确实说过他不关心数据,为什么不修改原始迁移中的列类型,从date到datetime,然后重新运行迁移呢?(希望你有测试:))。