diff options
-rw-r--r-- | lib/dm-validations-with-empty-errors-hack.rb | 30 | ||||
-rw-r--r-- | lib/mauve/datamapper.rb | 2 |
2 files changed, 31 insertions, 1 deletions
diff --git a/lib/dm-validations-with-empty-errors-hack.rb b/lib/dm-validations-with-empty-errors-hack.rb new file mode 100644 index 0000000..db06d42 --- /dev/null +++ b/lib/dm-validations-with-empty-errors-hack.rb @@ -0,0 +1,30 @@ +require 'dm-validations' + +module DataMapper + module Validations + # + # Rewrite save method to save without validations, if the validations failed, but give no reason. + # + # @api private + def save_self(*) + if Validations::Context.any? && !valid?(model.validators.current_context) + # + # Don't do anything unusual if there is no logger available. + # + return false unless self.respond_to?("logger") + + if self.errors.empty? + logger.warn "Forced to save #{self.inspect} without validations due to #{self.errors.inspect}." + super + else + false + end + else + super + end + end + end +end + + + diff --git a/lib/mauve/datamapper.rb b/lib/mauve/datamapper.rb index 2a1f509..1814302 100644 --- a/lib/mauve/datamapper.rb +++ b/lib/mauve/datamapper.rb @@ -14,7 +14,7 @@ require 'dm-aggregates' end end require 'dm-types' -require 'dm-validations' +require 'dm-validations-with-empty-errors-hack' # DataMapper::Model.raise_on_save_failure = true |