как сохранить массив в базу данных в rails
Если у меня есть такие параметры:
params["scholarship"] = {"name"=>"test", "state_ids"=>["1", "2", "3", "4"]}
и когда я создаю объект в поле базы данных state_id не сохранить в базу данных?
Как сохранить в базу данных в формате:
#<Scholarship id: 1, name: "test", state_id: "["1", "2", "3", "4"]">
как это сделать?
спасибо перед
4 ответов
И ActiveRecord::База.сериализация.
например:
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"] }
также вы можете использовать поддержку PostrgreSQL для хранения массива. (Если вы используете PG, конечно). Миграция будет выглядеть так:
add_column :table_name, :column_name, :string, array: true, default: []
но не забывайте о проверках.
в вашей модели есть
serialize :state_ids
здесь ссылке документации
это, как говорится, похоже, что вы пытаетесь передать параметры state_ids и сохранить его в state_id, это то, что вы собираетесь сделать?
state_ids != state_id
у вас есть 2 разных имени для вашего атрибута, поэтому они не выстраиваются в линию.
тогда используйте serialize :state_ids
после переименования столбца.
однако, если вы храните список state_ids, я собираюсь догадаться, что у вас также есть таблица состояний, и поэтому следует изучить использование has_and_belongs_to_many