2012-02-27 87 views
0

我有一个嵌入式样本的活动记录类:序列化和反序列化

class LabResults < ActiveRecord::Base 
    serialize :sample 
end 

class Sample 
    attr_accessor :values # GSL::Vector of responses 

    def to_yaml 
    YAML.quick_emit(self, opts) { |out| 
     out.map("!testfile,2012-02-27") { |map| 
     @values.map{|v| v.to_a } 
     } 
    } 
    end 

    def analyze; end; # do stuff with values 
end 

我想序列化和存储在数据库中的样品,但GSL ::向量(从GSL宝石),不具有to_yaml方法。在使用Rails 3.2的默认YAML引擎Psych时,为Sample定义to_yaml和YAML.quick_emit显然已被弃用。

任何想法如何序列化和反序列化此对象?

回答

0

您可以编写一个定制的(反)序列化的列,并把它作为第二个参数“串行化”,例如:

serialize :sample, SampleSerializer.new

哪里SampleSerializer是定义“装载”一类和“转储”方法。

本答题的更多内容:ActiveRecord serialize using JSON instead of YAML