如何从ActiveRecord的Serialize Array迁移到Postgres Array数据类型

时间:2015-07-08 21:20:21

标签: ruby-on-rails postgresql ruby-on-rails-4 activerecord rails-activerecord

Rails 4支持postgres' array data type,我们想开始利用postgres中的数组类型,如何将现有的ActiveRecord serialized array字段迁移到新数据类型?

1 个答案:

答案 0 :(得分:2)

serialize将数据库中的内容存储为文本列中的YAML文档。 YAML不是在数据库中使用的最简单的格式,因此最直接的方法是:

  1. 添加数组列以容纳数组。
  2. 遍历Rails中的每条记录,让ActiveRecord反序列化YAML,将Ruby数组从serialize列复制到 1 的实数组列。
  3. 从模型中删除serialize声明。
  4. 删除serialize使用的旧列。
  5. 1 重命名该列。
  6. 如果需要,将新重命名的列设置为NOT NULL
  7. 您可以使用regexstring函数解析数据库中的YAML,但这取决于您在YAML中存储的内容。