我正在寻找一些关于序列化数据库中对象的一般指导.
- 什么是序列化对象?
- 在数据库中序列化对象的最佳实践场景是什么?
- 在数据库中创建列时使用哪些属性,以便使用序列化对象?
- 如何保存序列化对象?
- 以及如何访问序列化对象及其属性?(使用哈希?)
我正在寻找一些关于序列化数据库中对象的一般指导.
在计算机科学中,在数据存储和传输的上下文中,序列化是将数据 struct 或对象转换为位序列的过程,以便可以将其存储在文件、内存缓冲区中,或通过网络连接链路传输,以便稍后在同一或另一计算机环境中"恢复".
所以序列化对象(在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, ...}