Sha256: b28d4ca2c0a97f9dc6e588385d7eb7ed980790bfeaab9f4009353e1e7d05b159
Contents?: true
Size: 826 Bytes
Versions: 8
Compression:
Stored size: 826 Bytes
Contents
module Friendly class Translator RESERVED_ATTRS = [:id, :created_at, :updated_at].freeze attr_reader :serializer, :time def initialize(serializer = JSON, time = Time) @serializer = serializer @time = time end def to_object(klass, record) record.delete(:added_id) attributes = serializer.parse(record.delete(:attributes)) klass.new attributes.merge(record).merge(:new_record => false) end def to_record(document) { :id => document.id, :created_at => document.created_at, :updated_at => time.new, :attributes => serialize(document) } end protected def serialize(document) attrs = document.to_hash.reject { |k,v| RESERVED_ATTRS.include?(k) } serializer.generate(attrs) end end end
Version data entries
8 entries across 8 versions & 2 rubygems