Sha256: 8767aa4119c5e4296d96948393fa543c82f8e18034a74f857a9aacfc8b9bfbdb
Contents?: true
Size: 1.54 KB
Versions: 2
Compression:
Stored size: 1.54 KB
Contents
module AbtainBilling #: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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
abtain_billing-1.03 | lib/abtain_billing/lib/validateable.rb |
abtain_billing-1.02 | lib/abtain_billing/lib/validateable.rb |