Сериализация и десериализация - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть активный класс записи со встроенным образцом:

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метод.Определение to_yaml и YAML.quick_emit для Sample, по-видимому, не рекомендуется при использовании движка YAML по умолчанию в Rails 3.2 Psych.

Есть идеи, как сериализовать и десериализовать этот объект?

1 Ответ

0 голосов
/ 28 февраля 2012

Вы можете написать собственный (де) сериализатор для столбца и передать его в качестве второго аргумента для «сериализации», например:

serialize :sample, SampleSerializer.new

Где SampleSerializer - класскоторый определяет методы "load" и "dump".

Подробнее в этом ответе: ActiveRecord сериализуется с использованием JSON вместо YAML

...