lib/rest_model/key/property/sender.rb in rest_model-0.1.19 vs lib/rest_model/key/property/sender.rb in rest_model-0.1.20
- old
+ new
@@ -3,12 +3,13 @@
module Sender
def to_source!(value, resource, options = {})
source_value = begin
translation.translates_to_source? ? translation.translate_to_source(value, resource)
: serializer.desserialize(value)
+
rescue TranslationError, SerializationError => error
- raise error if options[:fail]
+ raise error if options[:fail] and validates?(value)
end
source = {}
path = source_path
@@ -19,9 +20,15 @@
else
source.merge!(source_value)
end
source
+ end
+
+ private
+
+ def validates?(value)
+ (self.options[:validate_if_present] and !value.nil?) or self.options[:validate]
end
end
end
end