如果我有一个生产数据库,其中“types”存储为字符串,但我想将该列转换为enum
的整数。
我用google搜索/ SO'd,我发现我可以CAST
,但不确定这究竟是什么。
如果不是很难,我会喜欢使用rails enum
,但除此之外,也许我应该坚持使用我的字符串架构......
请指教!
答案 0 :(得分:7)
您可以重命名现有列,创建一个名为“types”(整数)的新列,然后编写一个脚本,在新列中存储适当的整数值,然后删除旧列。
迁移将如下所示:
class FixTypes < ActiveRecord::Migration
def change
rename_column :table_name, :types, :old_types
add_column :table_name, :types, :integer
end
end
然后编写一个脚本,根据“old_types”设置“类型”的值:
Model.all.each do |entry|
entry.types = %w(status1 status2 status3 status4).index(entry.old_types)
entry.save!
end
然后删除“old_types”列。