如何从数组字段转换字符串并将其另存为db列中的数组

时间:2018-12-31 15:56:43

标签: ruby-on-rails ruby ruby-on-rails-5.1

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

文本字段:

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 并点击“提交”,则应将其保存在db列中,如下所示:

["abc mbc csx"]

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

img

还有处理这些情况的最佳实践是什么?

2 个答案:

答案 0 :(得分:1)

例如,您可以继续将其存储为带有分隔符(例如,)的文本。并按如下所示将其转换为数组:

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

答案 1 :(得分:1)

此用例的解决方案:

从模型中移除了序列化数组。没有数组参数的帖子。

在前端张贴逗号。在视图上,使用.join(',')