lib/active_merchant/common/validateable.rb in bitfluent-activemerchant-1.5.1.1 vs lib/active_merchant/common/validateable.rb in bitfluent-activemerchant-1.15.1
- old
+ new
@@ -1,76 +1,81 @@
-module ActiveMerchant #:nodoc:
+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
+ end
def initialize(attributes = {})
self.attributes = attributes
end
- def errors
+ def errors
@errors ||= Errors.new(self)
end
private
def attributes=(attributes)
unless attributes.nil?
for key, value in attributes
- send("#{key}=", value )
+ send("#{key}=", value )
end
end
- end
+ end
# This hash keeps the errors of the object
class Errors < HashWithIndifferentAccess
def initialize(base)
+ super() { |h, k| h[k] = [] ; h[k] }
@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
+ def empty?
+ all? { |k, v| v && v.empty? }
+ 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
-
+ end
+
def add_to_base(error)
add(:base, error)
end
def each_full
- full_messages.each { |msg| yield msg }
+ full_messages.each { |msg| yield msg }
end
def full_messages
result = []
- self.each do |key, messages|
+ self.each do |key, messages|
+ next if messages.blank?
if key == 'base'
result << "#{messages.first}"
else
result << "#{key.to_s.humanize} #{messages.first}"
end
end
result
- end
- end
+ end
+ end
end
end
\ No newline at end of file