Module: MongoMapper::Plugins::Serialization::SerializableHash

Defined in:
lib/mongo_mapper/plugins/serialization.rb

Instance Method Summary collapse

Instance Method Details

#serializable_hash(options = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/mongo_mapper/plugins/serialization.rb', line 16

def serializable_hash options={}
  options ||= {}
  unless options[:only]
    methods = [options.delete(:methods)].flatten.compact
    methods << :id
    options[:methods] = methods.uniq
  end

  except = [options.delete(:except)].flatten.compact
  except << :_id
  options[:except] = except

  hash = super(options)
  hash.each do |key, value|
    if value.is_a?(Array)
      hash[key] = value.map do |item|
        item.respond_to?(:serializable_hash) ? item.serializable_hash(options) : item
      end
    elsif value.respond_to?(:serializable_hash)
      hash[key] = value.serializable_hash(options)
    end
  end
end