Sha256: 2d631bc09bcb0b1455695e3ce066e67ceb794fd0c29c9943df9520bacc3918b7

Contents?: true

Size: 1.54 KB

Versions: 130

Compression:

Stored size: 1.54 KB

Contents

module ActiveMerchant #:nodoc:  
  module Validateable #:nodoc:
    def valid?
      errors.clear

      before_validate if respond_to?(:before_validate, true)
      validate if respond_to?(:validate, true)

      errors.empty?
    end  

    def initialize(attributes = {})
      self.attributes = attributes
    end

    def errors    
      @errors ||= Errors.new(self)
    end

    private

    def attributes=(attributes)
      unless attributes.nil?
        for key, value in attributes
          send("#{key}=", value )            
        end
      end
    end  

    # This hash keeps the errors of the object
    class Errors < HashWithIndifferentAccess

      def initialize(base)
        @base = base
      end
      
      def count
        size
      end

      # returns a specific fields error message. 
      # if more than one error is available we will only return the first. If no error is available 
      # we return an empty string
      def on(field)
        self[field].to_a.first
      end

      def add(field, error)
        self[field] ||= []
        self[field] << error
      end    
      
      def add_to_base(error)
        add(:base, error)
      end

      def each_full
        full_messages.each { |msg| yield msg }      
      end

      def full_messages
        result = []

        self.each do |key, messages| 
          if key == 'base'
            result << "#{messages.first}"
          else
            result << "#{key.to_s.humanize} #{messages.first}"
          end
        end

        result
      end   
    end  
  end
end

Version data entries

130 entries across 130 versions & 31 rubygems

Version Path
tomriley-active_merchant-1.4.2.8 lib/active_merchant/lib/validateable.rb
tomriley-tomriley-active_merchant-1.4.2.4 lib/active_merchant/lib/validateable.rb
rclements_active_shipping-0.9.15 lib/active_merchant/common/validateable.rb
rclements_active_shipping-0.9.14 lib/active_merchant/common/validateable.rb
rclements_active_shipping-0.9.13 lib/active_merchant/common/validateable.rb
benhutton-active_shipping-0.9.13 lib/active_merchant/common/validateable.rb
activemerchant-1.14.0 lib/active_merchant/common/validateable.rb
active_shipping-0.9.13 lib/active_merchant/common/validateable.rb
active_shipping-0.9.12 lib/active_merchant/common/validateable.rb
activemerchant-1.13.0 lib/active_merchant/common/validateable.rb
goldstar-activemerchant-1.4.2.7 lib/active_merchant/lib/validateable.rb
active_shipping-0.9.11 lib/active_merchant/common/validateable.rb
activemerchant-1.12.1 lib/active_merchant/common/validateable.rb
active_shipping-0.9.10 lib/active_merchant/common/validateable.rb
activemerchant-1.12.0 lib/active_merchant/common/validateable.rb
active_shipping-0.9.9 lib/active_merchant/common/validateable.rb
activemerchant-abn-ideal-1.7.0c lib/active_merchant/common/validateable.rb
activemerchant-abn-ideal-1.7.0b lib/active_merchant/common/validateable.rb
active_shipping-0.9.8 lib/active_merchant/common/validateable.rb
activemerchant-1.11.0 lib/active_merchant/common/validateable.rb