我有一个Info
表,其中age
字段为int
但我想将类型更改为date
,以便我可以动态计算年龄。
所以我做了这次迁移:
class ChangeDateFormatInInfo < ActiveRecord::Migration[5.0]
def change
change_column :infos, :age, :date
end
end
但是有一个DatatypeMismatch
column "age" cannot be cast automatically to type date
所以我把它改成了:
change_column :infos, :age, :date, 'USING age::date'
但它仍然给了我
migrateTypeError: no implicit conversion of Symbol into Integer
我没有真正理解它,我告诉它转换它,所以我做错了什么?
答案 0 :(得分:1)
您必须首先删除该列,然后使用新数据类型再次添加该列。
请尝试以下代码:
rails g migration ChangeDateFormatInInfo
然后转到db/migrate/change_date_format_in_info_xxxx.rb
文件并打开它。
在迁移文件中添加以下代码:
class ChangeDateFormatInInfo < ActiveRecord::Migration[5.0]
def change
remove_column :infos, :age
add_column :infos, :age, :date
end
end
然后运行命令:
rake db:migrate
答案 1 :(得分:0)
没有考虑过这个问题,我只是进行了迁移以放弃该字段,另一个用于添加字段。现在完成:)
rails g migration remove_age_from_info age:integer
rails g migration add_age_to_info age:date