Module: Rethinker::Document::Serialization
- Extended by:
- ActiveSupport::Concern
- Includes:
- ActiveModel::Serialization, ActiveModel::Serializers::JSON, ActiveModel::Serializers::Xml
- Defined in:
- lib/rethinker/document/serialization.rb
Instance Method Summary collapse
-
#serializable_hash(options = nil) ⇒ Object
XXX This is a giant copy paste from lib/active_model/serialization.rb The diff is: - attribute_names = attributes.keys.sort + attribute_names = self.class.fields.keys.sort That’s all.
Instance Method Details
#serializable_hash(options = nil) ⇒ Object
XXX This is a giant copy paste from lib/active_model/serialization.rb The diff is:
-
attribute_names = attributes.keys.sort
+ attribute_names = self.class.fields.keys.sort That’s all.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rethinker/document/serialization.rb', line 15 def serializable_hash( = nil) ||= {} attribute_names = self.class.fields.keys.sort if only = [:only] attribute_names &= Array.wrap(only).map(&:to_s) elsif except = [:except] attribute_names -= Array.wrap(except).map(&:to_s) end hash = {} attribute_names.each { |n| hash[n] = read_attribute_for_serialization(n) } method_names = Array.wrap([:methods]).select { |n| respond_to?(n) } method_names.each { |n| hash[n] = send(n) } serializable_add_includes() do |association, records, opts| hash[association] = if records.is_a?(Enumerable) records.map { |a| a.serializable_hash(opts) } else records.serializable_hash(opts) end end hash end |