2009-11-23 114 views
0

当我们尝试从我们的数据库反序列化模型时,我们总是收到一个YAML对象。为此,我们在environment.rb中添加了以下代码:Rails中的序列化问题

YAML.add_domain_type("ActiveRecord,2007", "") do |type, val| 
    klass = type.split(":").last.constantize 
    YAML.object_maker(klass, val) 
end 

class ActiveRecord::Base 
    def to_yaml_type 
    "!ActiveRecord,2007/#{self.class}" 
    end 
end 

class ActiveRecord::Base 
    def to_yaml_properties 
    ['@attributes'] 
    end 
end 

This Works!但只有一次,当我刷新屏幕时,我总是undefined method ... for YAML。似乎我的代码不再执行...

任何人都可以帮忙吗?

Thnx!

回答

0
  1. 这不是一个好主意,序列化一个完整的活动记录对象。该对象可能会在此期间发生变化,并且在加载它时,您可能会发现自己正在处理一个陈旧的对象。
  2. 请确保您反序列化的对象的类定义在对象反序列化之前加载。通常,您不需要require该类,因为它在您尝试使用它时会被Ruby自动加载。反序列化对象时不会发生这种情况。