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::Vector(来自 gsl gem)没有 to_yaml 方法。在使用 Rails 3.2 的默认 YAML 引擎 Psych 时,显然不推荐为 Sample 定义 to_yaml 和 YAML.quick_emit。

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

4

1 回答 1

0

您可以为列编写自定义(反)序列化程序,并将其作为第二个参数传递给“序列化”,例如:

serialize :sample, SampleSerializer.new

其中 SampleSerializer 是一个定义“加载”和“转储”方法的类。

此答案中的更多详细信息:ActiveRecord serialize using JSON instead of YAML

于 2012-02-28T04:51:59.660 回答