Module: Gecko::Helpers::SerializationHelper

Included in:
Record::Base
Defined in:
lib/gecko/helpers/serialization_helper.rb

Overview

Provides serialization to records

Instance Method Summary collapse

Instance Method Details

#as_jsonHash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a full JSON representation of a record

Examples:

product.as_json #=> {product: {id: 12, name: "Big"}}

Returns:

  • (Hash)


13
14
15
16
17
# File 'lib/gecko/helpers/serialization_helper.rb', line 13

def as_json
  {
    root => serializable_hash
  }
end

#rootString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return JSON root key for a record

Examples:

product.root #=> "product"

Returns:

  • (String)


56
57
58
# File 'lib/gecko/helpers/serialization_helper.rb', line 56

def root
  self.class.demodulized_name.underscore.to_sym
end

#serializable_hashHash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return a serialized hash of the record’s attributes

Examples:

product.serializable_hash #=> {id: 12, name: "Big"}

Returns:

  • (Hash)


27
28
29
30
31
32
33
34
# File 'lib/gecko/helpers/serialization_helper.rb', line 27

def serializable_hash
  attribute_hash = {}
  attribute_set.each do |attribute|
    next if attribute.options[:readonly]
    serialize_attribute(attribute_hash, attribute)
  end
  attribute_hash
end

#serialize_attribute(attribute_hash, attribute) ⇒ undefined

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Serialize a single attribute

Parameters:

  • attribute_hash (Hash)

    Serialized record being iterated over

  • attribute (Virtus::Attribute)

    The attribute being serialized

Returns:

  • (undefined)


44
45
46
# File 'lib/gecko/helpers/serialization_helper.rb', line 44

def serialize_attribute(attribute_hash, attribute)
  attribute_hash[attribute.name] = attributes[attribute.name]
end