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
73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 73 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
96 97 98 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 96 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 |
# 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 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
62 63 64 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 62 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
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/gecko/helpers/serialization_helper.rb', line 41 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 |