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!