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