Сериализация объектов Ruby on Rails - PullRequest
1 голос
/ 28 сентября 2011

У меня есть items объект, который является хешем, и я хочу сохранить его в таблице базы данных.

Миграция:

t.string :items

Запись:

items: items.to_json

Чтение:

@order.items  # returns a string, not a hash as needed.

Как мне решить эту проблему?

1 Ответ

1 голос
/ 28 сентября 2011

Вы должны добавить в свою модель объявление serialize:

class Xyzzy < ActiveRecord::Base
  serialize :items
end

При желании вы можете указать класс:

serialize :items, Hash

, поэтому исключение будетбыть брошенным, если объект 'items' относится к какому-то другому классу.

Кроме того, столбец в базе данных должен быть объявлен как :text, потому что длина столбца :string по умолчанию равна 255символов, и он может быть слишком коротким для сериализованного объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...