Module: ObjectField::Serializer::ClassMethods

Defined in:
lib/object_field/serializer.rb

Instance Method Summary collapse

Instance Method Details

#serialize(field_name, as: nil, compression: Zlib::DEFAULT_COMPRESSION) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/object_field/serializer.rb', line 4

def serialize(field_name, as: nil, compression: Zlib::DEFAULT_COMPRESSION)
  accessor = as || accessor_name(field_name)
  define_method accessor do |klass=nil|
    object = Marshal.load(Zlib.inflate(self.send(field_name)))
    klass ? klass.new(object) : object
  end

  define_method "#{accessor}=" do |object|
    self.send "#{field_name}=", Zlib.deflate(Marshal.dump(object), compression)
  end
end