lib/rest_model/source/sender.rb in rest_model-0.1.6 vs lib/rest_model/source/sender.rb in rest_model-0.1.7
- old
+ new
@@ -5,16 +5,24 @@
to_source(options.merge(fail: true))
end
def to_source(options = {})
source = {}
+ errors = {}
root_options = {without_nil: options[:without_nil], fail: options[:fail]}
keys_to_source(options).each do |key|
value = __send__(key.name)
key_options = options.fetch(key.name, {}).merge(root_options)
- source.merge! key.to_source!(value, self, key_options)
+
+ begin
+ source.merge! key.to_source!(value, self, key_options)
+ rescue TranslationError, SerializationError => error
+ errors[key.name] = error.message
+ end
end
+
+ fail SourceError, errors unless errors.empty? if options[:fail]
source.with_indifferent_access
end
alias :to_input! :to_source!