Как преобразовать строку из поля массива и сохранить ее как массив в столбце БД - PullRequest
0 голосов
/ 31 декабря 2018

Я не могу сохранить массив в столбце базы данных.

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"]

Кроме того, каковы лучшие практики для решения этих случаев?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Решение для этого варианта использования:

Удален массив сериализации из модели.Пост без параметров массива.

Пост с запятыми на переднем конце.На вид используйте .join(',')

0 голосов
/ 31 декабря 2018

Вы можете хранить его как текст с разделителем, например, ",".И вы конвертируете его в массив, когда читаете его следующим образом:

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