diff options
author | Patrick J Cherry <patrick@bytemark.co.uk> | 2012-11-27 09:42:27 +0000 |
---|---|---|
committer | Patrick J Cherry <patrick@bytemark.co.uk> | 2012-11-27 09:42:27 +0000 |
commit | 939dc36052039e65a0af2936ffb1135281397eb2 (patch) | |
tree | 804e0745f2e3d94301c4df1f62ef8e9f68c3acb5 /lib | |
parent | df1a036268e52396eca349b2803a5e05f891733c (diff) |
Monkey patch to cause validations to save anyway, if no error has been
given.
Diffstat (limited to 'lib')
-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 |