我有一个带有嵌入式示例的活动记录类:
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 :: Vector(来自gsl gem)没有to_yaml方法。当使用Rails 3.2的默认YAML引擎Psych时,显然不推荐为Sample定义to_yaml和YAML.quick_emit。
如何序列化和反序列化此对象的任何想法?
答案 0 :(得分:0)
您可以为列编写自定义(de)序列化程序,并将其作为第二个参数传递给“serialize”,例如:
serialize :sample, SampleSerializer.new
其中SampleSerializer是一个定义“load”和“dump”方法的类。
此答案中的更多详细信息:ActiveRecord serialize using JSON instead of YAML