Sha256: 6067502df58b14b622aebc86183755f9b94cf8ed616b4e4aa65fbb21c88e6b81
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
# frozen_string_literal: true %w[base presence_of format_of numericality_of length_of set_base inclusion_of exclusion_of].each do |validation| require "simple_validate/validates_#{validation}" end require 'simple_validate/errors' require 'simple_validate/version' require 'active_support/all' module SimpleValidate def self.included(klass) klass.extend(ClassMethods) klass.include(InstanceMethods) end module InstanceMethods def valid? self.class.validate(self) end def invalid? !valid? end def errors @errors ||= Errors.new end end module ClassMethods def method_missing(method, *args, &block) if respond_to?(method) add_validations(args, const_get(method.to_s.classify)) else super end end def respond_to_missing?(method, include_private = false) method.to_s =~ /(validates_ (format| presence| numericality| inclusion| exclusion| length)_of) /x || 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| if validation.condition.call && !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-1.2.3 | lib/simple_validate.rb |