如何从数组字段转换字符串并将其保存为数据库列中的数组
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(',')
我无法在数据库列中存储数组。
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(',')