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" の 2 番目の引数として渡すことができます。

serialize :sample, SampleSerializer.new

SampleSerializer は、「ロード」および「ダンプ」メソッドを定義するクラスです。

この回答の詳細: YAML の代わりに JSON を使用した ActiveRecord シリアル化

于 2012-02-28T04:51:59.660 に答える