Rails:序列化数据库中的对象?

ker*_*lin 34 ruby serialization model ruby-on-rails object

我正在寻找有关序列化数据库中对象的一般指导.

  1. 什么是序列化对象?
  2. 在数据库中序列化对象有哪些最佳实践方案?
  3. 在DB中创建列时使用了哪些属性,以便可以使用序列化对象?
  4. 如何保存序列化对象?
  5. 以及如何访问序列化对象及其属性?(使用哈希?)

sev*_*rin 55

在计算机科学中,在数据存储和传输的上下文中,序列化是将数据结构或对象转换为比特序列的过程,以便它可以存储在文件,存储缓冲器中或通过网络连接链路传输.稍后在相同或另一个计算机环境中"复活".(见http://en.wikipedia.org/wiki/Serialization)

  1. 因此,序列化对象(在ActiveRecord的上下文中)是对象的文本/字符串表示(使用YAML编码).序列化后,您可以将(几乎)任何Ruby对象保存在单个数据库字段中.

  2. 如果您需要将某些复杂的对象保存在数据库中,并且不需要根据序列化属性的内容检索记录,则可以使用序列化.我使用它们来存储webapp用户的首选项:首选项基本上是我想要保存在单个数据库字段中的哈希值.

3./4./5.使用ActiveRecord :: Base.serialize作为Marc-AndréLafortune建议:

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, ...}
Run Code Online (Sandbox Code Playgroud)