是否可以在不清除已输入数据的情况下将字符串字段更改为整数?
该表的当前数据库 struct 为:
create_table :people do |t|
t.string :company_id
使用迁移可以做到这一点吗?
我在想,也许在迁移过程中删除旧字段,创建一个整数的新字段——但我担心这会清除所有已经输入的数据.
谢谢
丹尼
是否可以在不清除已输入数据的情况下将字符串字段更改为整数?
该表的当前数据库 struct 为:
create_table :people do |t|
t.string :company_id
使用迁移可以做到这一点吗?
我在想,也许在迁移过程中删除旧字段,创建一个整数的新字段——但我担心这会清除所有已经输入的数据.
谢谢
丹尼
不要删除该列,它将清除数据.
不过你可以试试
change_column :people, :company_id, :integer
如果company_id
中的所有值都可以转换为integer
,那就没问题了.
如果情况并非如此(即并非所有字符串都可以在默认情况下进行转换),那么您可以分两步进行:1)创建一个新列,然后在转换后在其中加载company_id
.2) 删除公司id,然后重命名新列.
这两种方法都要小心(第二种方法更要小心),如果可以的话,可能应该先在数据库的副本上执行.