我需要将我的应用程序中的一列从日期类型更改为日期时间类型。由于该应用程序仍在开发中,因此我不关心数据。
我该如何做?
我需要将我的应用程序中的一列从日期类型更改为日期时间类型。由于该应用程序仍在开发中,因此我不关心数据。
我该如何做?
首先在您的终端中执行以下命令:
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.
要使迁移可逆,你可以选择:
1. 在 #change 方法的位置定义 #up 和 #down 方法。
2. 使用 #reversible 方法来定义可逆行为。
- Marklar$ 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)
rake db:rollback
命令是无法恢复的。 - danielricecodesrake db:migrate:reset
命令来解决。 - Ryan McGeary
change
方法而是使用up
和down
方法,那是因为change
方法不支持change_column
迁移定义。 - Dennis