В компьютерных науках в контексте хранения и передачи данных сериализация - это процесс преобразования структуры данных или объекта в последовательность битов, чтобы они могли быть сохранены в файле, буфере памяти или переданы через ссылка на сетевое соединение, которая будет «воскрешена» позже в той же или другой компьютерной среде.
(см. http://en.wikipedia.org/wiki/Serialization)
Таким образом, сериализованные объекты (в контексте ActiveRecord) представляют собой текстовые / строковые представления объектов (закодированные с использованием YAML). После сериализации вы можете сохранить (почти) любой объект Ruby в одном поле базы данных.
Вы можете использовать сериализацию, если у вас есть несколько сложных объектов, которые необходимо сохранить в базе данных, и вам не нужно извлекать записи на основе содержимого сериализованного атрибута. Я использовал их, например, для хранения настроек для пользователей веб-приложения: в основном это были хеши, которые я хотел сохранить в одном поле БД.
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, ...}