Ответ 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, ...}