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
|