在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或更新的版本,则不必使用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的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:))。