Sha256: 6f0c8b696781d3fe7b30e0a6852058efbe97d590e210ca14937a8f1790aa888b

Contents?: true

Size: 1.13 KB

Versions: 14

Compression:

Stored size: 1.13 KB

Contents

module ObjectAttorney
  module Validations

    def valid?(context = nil)
      return true if override_validations? || !Helpers.has_errors_method?(self)

      context ||= (new_record? ? :create : :update)
      output = super(context)

      load_errors_from imposed_errors

      errors.empty? && output
    end
    
    def override_validations?
      marked_for_destruction?
    end

    def clear_imposed_errors
      @imposed_errors = {}
    end

    def populate_imposed_errors
      if respond_to?(:represented_object)
        represented_object.errors.each { |key, value| imposed_errors[key] = value } if Helpers.has_errors_method?(represented_object)
      else
        errors.each { |key, value| imposed_errors[key] = value } if Helpers.has_errors_method?(self)
      end
    end

    def imposed_errors
      @imposed_errors ||= {}
    end

    private #################### PRIVATE METHODS DOWN BELOW ######################

    def load_errors_from(errors)
      errors.each do |key, value|
        [*value].each do |_value|
          self.errors.add(key, _value) unless self.errors.added?(key, _value)
        end
      end
    end

  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
object_attorney-2.10.5 lib/object_attorney/validations.rb
object_attorney-2.10.3 lib/object_attorney/validations.rb
object_attorney-2.10.2 lib/object_attorney/validations.rb
object_attorney-2.10.1 lib/object_attorney/validations.rb
object_attorney-2.9.4 lib/object_attorney/validations.rb
object_attorney-2.9.3 lib/object_attorney/validations.rb
object_attorney-2.9.2 lib/object_attorney/validations.rb
object_attorney-2.9.0 lib/object_attorney/validations.rb
object_attorney-2.8.1 lib/object_attorney/validations.rb
object_attorney-2.8.0 lib/object_attorney/validations.rb
object_attorney-2.6.12 lib/object_attorney/validations.rb
object_attorney-2.6.11 lib/object_attorney/validations.rb
object_attorney-2.6.10 lib/object_attorney/validations.rb
object_attorney-2.6.9 lib/object_attorney/validations.rb