diff options
Diffstat (limited to 'lib/dm-validations-with-empty-errors-hack.rb')
-rw-r--r-- | lib/dm-validations-with-empty-errors-hack.rb | 30 |
1 files changed, 30 insertions, 0 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 + + + |