在数据库中将现有的字符串字段类型转换为数组字段类型Rails + PostgreSQL

问题描述

我将Ruby on Rails与Postgresql一起使用,并且具有用于附件的String db字段。现在,我支持文件上传,并且需要将我的附件字符串db字段转换为字符串数组,以便可以托管多个文件

如何使用Rails控制台将现有的“ String”数据库字段转换为“ String Array”?

enter image description here

enter image description here

解决方法

您不会将“字符串”数据库字段转换为“字符串数组”。您正在寻找的是串行器。在模型中执行以下操作

class Post < ApplicationRecord
  serialize :attachment,Array
end

# Try in rails console
Post.find 117
#=> #<Post id: 117,attachment: ["11.jpg","22.jpg","33.jpg"] ...>

您可以在保存提供的同时保存提供的数组,并将其转换为字符串并存储,在提取时将其转换为字符串并返回数组

您还可能希望将列从attachment重命名为attachments,因为该列将包含一个数组。