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

Des*_*ner 2 ruby arrays postgresql ruby-on-rails carrierwave

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

如何使用 Rails Console 将现有的“字符串”数据库字段转换为“字符串数组”?

在此输入图像描述

在此输入图像描述

Kum*_*mar 5

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

class Post < ApplicationRecord
  serialize :attachment, Array
end

# Try in rails console
Post.find 117
#=> #<Post id: 117, attachment: ["11.jpg", "22.jpg", "33.jpg"] ...>
Run Code Online (Sandbox Code Playgroud)

您可以在保存时提供一个数组,它会将其转换为字符串并存储它,而在提取它时会将字符串转换为数组并返回数组

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