Permalink
Fetching contributors…
Cannot retrieve contributors at this time
41 lines (34 sloc) 1022 Bytes
require "active_model"
require "msgpack_rails/activesupport/message_pack"
module ActiveModel
module Serializers
module MessagePack
extend ActiveSupport::Concern
include ActiveModel::Serialization
included do
extend ActiveModel::Naming
class_attribute :include_root_in_msgpack
self.include_root_in_msgpack = false
end
def as_msgpack(options = {})
root = if options && options.key?(:root)
options[:root]
else
include_root_in_msgpack
end
if root
root = self.class.model_name.element if root == true
{ root => serializable_hash(options) }
else
serializable_hash(options)
end
end
def from_msgpack(msgpack, include_root=include_root_in_msgpack)
hash = ActiveSupport::MessagePack.decode(msgpack)
hash = hash.values.first if include_root
self.attributes = hash
self
end
end
end
end