如何使属性瞬态(未编组)

时间:2012-07-03 18:05:20

标签: ruby marshalling

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

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

(我知道this question,但给定的答案似乎只适用于ActiveRecord类。)

1 个答案:

答案 0 :(得分:2)

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

  

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

     

当加载使用marshal_dump转储的对象时,该对象是第一个   然后使用结果从中调用marshal_load   marshal_dump。 marshal_load必须从中重新创建对象   结果中的信息。

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