如何从数组字段转换字符串并将其保存为数据库列中的数组

How to convert string from array field and save it as array in db column

我无法在数据库列中存储数组。

text_field:

= text_field_tag 'product[keywords][]', @product.keywords, class: 'tab-input
product_keywords'

控制器参数:

params.require(:product).permit(:id, :name, :keywords => [])

型号:

serialize :keywords, Array

迁移:

class AddKeywordsToProducts < ActiveRecord::Migration[5.1]
  def change
    add_column :products, :keywords, :text
  end
end

因此,如果有人写 abc mbc csx 并点击提交,它应该作为数组保存在数据库列中,如下所示:

["abc", "mbc", "csx"]

现在我想将它存储为列中的数组,但存储不正确。 它存储为:

["abc mbc csx"]

此外,处理这些情况的最佳做法是什么?

您可以继续将其存储为带有分隔符(例如“,”)的文本。当你读取它时,你将它转换为一个数组,如下所示:

keywords = Product.find(id).keywords.split(",")

此用例的解决方案:

已从模型中删除序列化数组。 Post 没有数组参数。

Post 前端带逗号。在视图中,使用 .join(',')