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

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

推荐答案

在计算机科学中,在数据存储和传输的上下文中,序列化是将数据 struct 或对象转换为位序列的过程,以便可以将其存储在文件、内存缓冲区中,或通过网络连接链路传输,以便稍后在同一或另一计算机环境中"恢复".

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

  2. 如果需要在数据库中保存一些比较复杂的对象,并且不需要基于序列化属性的内容检索记录,则可以使用序列化.例如,我用它们来存储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, ...}

Ruby-on-rails相关问答推荐

包含字母和数字组合的正则表达式

合成轨道布局

Grape api (rails) - 未初始化常量 Endpoints::TodoAPI (NameError)

多行与内联块之间的不同行为

这种使用on:的语法在 Ruby on Rails 中意味着什么?

如何在 Arel 中重用单个绑定变量?

ViewModel 和 Controller 有什么区别?

使用brew 软件安装了 elasticsearch,但找不到配置文件

Ruby on Rails 取消首字母大写

如何在我的 rails 应用程序中测试 ActiveRecord::RecordNotFound?

基于 2 列定义唯一主键

simple_forms 自定义数据属性

具有 has_many 关联的 FactoryGirl build_stubbed 策略

在 rake 任务期间关闭观察者的简单方法?

在 ruby​​ on rails 上构建方法

Ruby gem 命名约定

如何为模型添加属性?

如何仅使用 PostgreSQL 创建简单的模糊搜索?

我是否必须手动卸载所有依赖的 gem?

资源和资源方法之间的区别