Sha256: 6a3be57092347457d59fc2a8499bbf1892cf3f22518732e405c522d3914ce125

Contents?: true

Size: 943 Bytes

Versions: 11

Compression:

Stored size: 943 Bytes

Contents

module Validatable
  class ValidationBase #:nodoc:
    attr_accessor :message, :if, :after_validate, :allow_nil, :allow_blank
    attr_accessor :attribute, :klass

    def initialize(klass, attribute, options={})
      self.klass = klass
      options.each{|k, v| self.send :"#{k}=", v}
      self.attribute = attribute
    end

    def validate instance
      if should_validate?(instance) and !valid?(instance)
        instance.errors.add attribute, message(self)
      end
    end

    protected
      def message instance
        @message.respond_to?(:call) ? instance.instance_eval(&@message) : @message
      end

      def should_validate? instance
        result = true # validate_this_time?(instance)
        case self.if
          when Proc
            result &&= instance.instance_eval(&self.if)
          when Symbol, String
            result &&= instance.instance_eval(self.if.to_s)
        end
        result
      end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
validatable2-0.0.14 lib/validatable/validations/validation_base.rb
validatable2-0.0.13 lib/validatable/validations/validation_base.rb
validatable2-0.0.12 lib/validatable/validations/validation_base.rb
validatable2-0.0.11 lib/validatable/validations/validation_base.rb
validatable2-0.0.10 lib/validatable/validations/validation_base.rb
validatable2-0.0.9 lib/validatable/validations/validation_base.rb
validatable2-0.0.8 lib/validatable/validations/validation_base.rb
validatable2-0.0.7 lib/validatable/validations/validation_base.rb
validatable2-0.0.6 lib/validatable/validations/validation_base.rb
validatable2-0.0.5 lib/validatable/validations/validation_base.rb
validatable2-0.0.4 lib/validatable/validations/validation_base.rb