Module: Gecko::Helpers::SerializationHelper
- Defined in:
- lib/gecko/helpers/serialization_helper.rb
Overview
Provides serialization to records
Instance Method Summary collapse
-
#_serialize(serialized) ⇒ String
private
Serialize an attribute.
-
#as_json ⇒ Hash
private
Returns a full JSON representation of a record.
-
#root ⇒ String
private
Return JSON root key for a record.
-
#serializable_hash ⇒ Hash
private
Return a serialized hash of the record’s attributes.
-
#serialize_attribute(attribute_hash, attribute) ⇒ undefined
private
Store the serialized representation of a single attribute.
-
#writeable?(attribute) ⇒ Boolean
private
Returns true if an attribute can be serialized.
Instance Method Details
#_serialize(serialized) ⇒ String
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 an attribute
78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 78 def _serialize(serialized) if serialized.respond_to?(:serializable_hash) serialized.serializable_hash else case serialized when Array serialized.map { |attr| _serialize(attr) } when BigDecimal serialized.to_s("F") else serialized end end end |
#as_json ⇒ Hash
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
13 14 15 16 17 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 13 def as_json { root => serializable_hash } end |
#root ⇒ String
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
101 102 103 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 101 def root self.class.demodulized_name.underscore.to_sym end |
#serializable_hash ⇒ Hash
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
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 27 def serializable_hash attribute_hash = {} attribute_set.each do |attribute| next unless writeable?(attribute) serialize_attribute(attribute_hash, attribute) end .each do |collection| serialize_new_records(attribute_hash, collection) 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.
Store the serialized representation of a single attribute
67 68 69 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 67 def serialize_attribute(attribute_hash, attribute) attribute_hash[attribute.name] = _serialize(attributes[attribute.name]) end |
#writeable?(attribute) ⇒ Boolean
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 true if an attribute can be serialized
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 46 def writeable?(attribute) return if attribute.[:readonly] return true unless attribute.[:writeable_on] case attribute.[:writeable_on] when :update persisted? when :create !persisted? else raise ArgumentError end end |