1

我正在使用 Ruby 1.8.6 并且有一个我想使用 memcache-client 缓存的类(不是Marshal.dumpActiveRecord 类),它在将其存储在缓存中之前对其进行序列化。但是,它有一个我不想序列化的实例变量(它确实引用了一个 ActiveRecord 类),因为我不希望多个对象对应于同一数据库行运行。相反,我想在从缓存中加载序列化对象并重建后,将属性设置为引用适当的对象(我已经引用了该对象)。

防止只有一个属性被编组的最简单方法是什么?

(我知道这个问题,但给定的答案似乎只适用于 ActiveRecord 类。)

4

1 回答 1

2

来自http://www.ruby-doc.org/core-1.9.3/Marshal.html

转储对象时,将调用 marshal_dump 方法。marshal_dump 必须返回包含 marshal_load 重构对象所需信息的结果。结果可以是任何对象。

加载使用 marshal_dump 转储的对象时,首先分配对象,然后使用 marshal_dump 的结果调用 marshal_load。marshal_load 必须根据结果中的信息重新创建对象。

所以你链接的问题也适用于你。只需覆盖这两种方法,你应该没问题。

于 2012-07-03T18:13:39.063 回答