как сохранить массив в базу данных в 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