Postgresql 使用迁移更改字段类型

Postgresql 使用迁移更改字段类型,postgresql,migration,ruby-on-rails-5,Postgresql,Migration,Ruby On Rails 5,我有一个Info表,表中有一个age字段,该字段是int 但是我想将类型更改为日期,这样我就可以动态计算年龄 所以我做了这个迁移: class ChangeDateFormatInInfo < ActiveRecord::Migration[5.0] def change change_column :infos, :age, :date end end 所以我把它改成: change_column :infos, :age, :date, 'USING age::dat

我有一个
Info
表,表中有一个
age
字段,该字段是
int

但是我想将类型更改为日期,这样我就可以动态计算年龄

所以我做了这个迁移:

class ChangeDateFormatInInfo < ActiveRecord::Migration[5.0]
  def change
    change_column :infos, :age, :date
  end
end
所以我把它改成:

change_column :infos, :age, :date, 'USING age::date'
但它仍然给我

migrateTypeError: no implicit conversion of Symbol into Integer

我没有真正理解它,我告诉它转换它,那么我做错了什么?

没有考虑它,我只是做了一个迁移来删除字段,另一个迁移来添加字段。现在完成:)


您必须首先删除该列,然后使用新的数据类型再次添加该列

因此,请尝试以下代码:

rails g migration ChangeDateFormatInInfo
然后转到\u info\u xxxx.rb中的
db/migrate/change\u date\u format\u并打开它

在迁移文件中添加以下代码:

class ChangeDateFormatInInfo < ActiveRecord::Migration[5.0]
  def change
    remove_column :infos, :age
    add_column :infos, :age, :date
  end
end
rails g migration ChangeDateFormatInInfo
class ChangeDateFormatInInfo < ActiveRecord::Migration[5.0]
  def change
    remove_column :infos, :age
    add_column :infos, :age, :date
  end
end
rake db:migrate