Sha256: 08cbf5cb3eec2c6de68c82c6ef1809679dae9d886ea37a8da3b8501448f5eea1

Contents?: true

Size: 1.14 KB

Versions: 6

Compression:

Stored size: 1.14 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?
      Helpers.marked_for_destruction?(self)
    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

6 entries across 6 versions & 1 rubygems

Version Path
object_attorney-2.10.12 lib/object_attorney/validations.rb
object_attorney-2.10.11 lib/object_attorney/validations.rb
object_attorney-2.10.10 lib/object_attorney/validations.rb
object_attorney-2.10.9 lib/object_attorney/validations.rb
object_attorney-2.10.7 lib/object_attorney/validations.rb
object_attorney-2.10.6 lib/object_attorney/validations.rb