Sha256: a8d7ff7d7aac7f0bd0a6d862b2019c8d40263145cc68652c5f506cc65a637055
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
require 'simple_validate/version' require 'simple_validate/validates_presence_of' require 'simple_validate/validates_format_of' require 'simple_validate/validates_numericality_of' require 'simple_validate/errors' require 'active_support/all' module SimpleValidate def self.included(klass) klass.extend ClassMethods end def valid? self.class.validate(self) end def invalid? !valid? end def errors @errors ||= Errors.new end module ClassMethods def method_missing(method, *args, &block) if "#{method}" =~ /(validates_(format_of|presence_of|numericality_of))/ add_validations(args, const_get($1.classify)) else super end end def respond_to_missing?(method, include_private = false) "#{method}" =~ /validates_(format_of|presence_of|numericality_of)/ || super end def add_validations(args, klass) options = args.extract_options! args.each do |attr| validations << klass.new(attr, options) end end def validations @validations ||= [] end def validate(instance) validations.each do |validation| unless validation.valid?(instance) instance.errors.add(validation.attribute, validation.message) end end instance.errors.empty? end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
simple_validate-0.1.0 | lib/simple_validate.rb |