Этот вопрос задают много раз на SO.Основная проблема заключается в том, что ничто не вписывается в мою ситуацию.
Дело в том, что я не могу сохранить типизированное содержимое в виде массива в столбце базы данных.
text_field, код которого:
= text_field_tag 'product[keywords][]', @product.keywords, class: 'tab-input
product_keywords'
В сильных параметрах контроллера:
params.require(:product).permit(:id, :name, :keywords => [])
Jquery-код, который не удаляет значение при удалении, когда введено неправильное значение, но онодобавьте запятые после каждого элемента, так как я хочу принять значение в одном столбце через запятую.
$(document).on 'keyup', '.product_keywords', ->
keyword = @value.replace(/(\w)[\s,]+(\w?)/g, '$1, $2')
if keyword != @value
@value = keyword
return
код модели:
serialize :keywords, Array
код миграции:
class AddKeywordsToProducts < ActiveRecord::Migration[5.1]
def change
add_column :products, :keywords, :text
end
end
Итак, если кто-то пишет, abc и пробел, в конце добавляется запятая.после трех напечатанных слов это будет выглядеть так:
abc, dbx, she
Теперь я хочу сохранить его как массив в столбце, но он не хранится должным образом.он хранится как:
["abc, dbx, she"]
Также, пожалуйста, кто-нибудь может сказать мне лучшие случаи для обработки этих случаев?Плюс лучшие практики для работы с такими случаями, используя ruby, так что я изучу это на будущее?