Как сохранить массив в базе данных в рельсах

если у меня есть такие параметры:

params["scholarship"] = {"name"=>"test", "state_ids"=>["1", "2", "3", "4"]}

и когда я создаю объект в поле базы данных state_id, не сохраняя базу данных?

как сохранить базу данных в формате:

#<Scholarship id: 1, name: "test", state_id: "["1", "2", "3", "4"]">

как это сделать?

спасибо перед

Ответы

Ответ 1

ActiveRecord:: Base.serialize.

Например:

class User < ActiveRecord::Base
  serialize :scholarship
end

user = User.create(:scholarship=> { "name" => "test", "state_ids" => ["1", "2"]})
User.find(user.id).scholarship# => { "name" => "test", "state_ids" => ["1", "2"] }

Ответ 2

Также вы можете использовать поддержку PostrgreSQL для хранения массива. (Если вы используете PG, конечно). Ваша миграция будет выглядеть так:

add_column :table_name, :column_name, :string, array: true, default: []

Но не забывайте о проверках.

Ответ 3

В вашей модели есть

serialize :state_ids

Вот ссылка в документации

Сказано, что похоже, что вы пытаетесь передать параметры state_ids и сохранять его в state_id, это то, что вы намереваетесь делать?

Ответ 4

state_ids != state_id

у вас есть 2 разных имени для вашего атрибута, поэтому они не выстраиваются в линию. затем используйте serialize :state_ids после переименования столбца.

Однако, если вы сохраняете список state_ids, я собираюсь предположить, что у вас также есть таблица состояний, и поэтому следует изучить has_and_belongs_to_many.