Подтвердить что ты не робот

Rails: Сериализация объектов в базе данных?

Я ищу некоторые общие рекомендации по сериализации объектов в базе данных.

  • Что такое сериализованные объекты?
  • Каковы некоторые наиболее эффективные сценарии для сериализации объектов в БД?
  • Какие атрибуты вы используете при создании столбца в БД, чтобы вы могли использовать сериализованный объект?
  • Как сохранить сериализованный объект?
  • А как получить доступ к сериализованному объекту и его атрибутам? (Использование хэшей?)
4b9b3361

Ответ 1

В информатике, в контексте хранения и передачи данных, сериализация представляет собой процесс преобразования структуры данных или объекта в последовательность бит, чтобы он мог быть сохранен в файле, в буфере памяти или передан через ссылка на подключение к сети будет "воскрешена" позже в той же или другой компьютерной среде. (см. http://en.wikipedia.org/wiki/Serialization)

  • Таким образом, сериализованные объекты (в контексте ActiveRecord) представляют собой текстовые/строковые представления объектов (закодированные с использованием YAML). После сериализации вы можете сохранить (почти) любой объект Ruby в одном поле базы данных.

  • Вы можете использовать сериализацию, если у вас есть несколько сложных объектов, которые необходимо сохранить в базе данных, и вам не нужно извлекать записи на основе содержимого сериализованного атрибута. Я использовал их, например, для хранения предпочтений для пользователей webapp: предпочтения были в основном хэшами, которые я хотел сохранить в одном поле db.

3./4./5. Используйте ActiveRecord:: Base.serialize, поскольку Марк-Андре Лафортун предложил:

class User < ActiveRecord::Base
  serialize :preferences
end

u = User.new
u.preferences = {:show_tooltips => true, :use_extended_menu => false, ...}
u.save

# ...

u = User.find(23)
u.preferences # => {:show_tooltips => true, :use_extended_menu => false, ...}