Sha256: 07a59be80f70b51a63f3413406c9b103ab869afcf1214f054c8e44df94d57c1a

Contents?: true

Size: 924 Bytes

Versions: 12

Compression:

Stored size: 924 Bytes

Contents

module PopulateMe
  module DocumentMixins
    module Validation

      attr_accessor :_errors
      
      def errors; self._errors; end

      def error_on k,v 
        self._errors[k] = (self._errors[k]||[]) << v
        self
      end

      def valid?
        self._errors = {}
        exec_callback :before_validate
        validate
        exec_callback :after_validate
        nested_docs.reduce self._errors.empty? do |result,d|
          result &= d.valid?
        end
      end

      def validate; end

      def error_report
        report = self._errors.dup || {}
        persistent_instance_variables.each do |var|
          value = instance_variable_get var
          if value.is_a? Array
            k = var[1..-1].to_sym
            report[k] = []
            value.each do |d|
              report[k] << d.error_report
            end
          end
        end
        report
      end

    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
populate-me-0.4.0 lib/populate_me/document_mixins/validation.rb
populate-me-0.3.0 lib/populate_me/document_mixins/validation.rb
populate-me-0.2.0 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.8 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.7 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.6 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.5 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.4 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.3 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.2 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.1 lib/populate_me/document_mixins/validation.rb
populate-me-0.1.0 lib/populate_me/document_mixins/validation.rb