Class: WhyValidationsSuckIn96::Validation

Inherits:
Object
  • Object
show all
Defined in:
lib/whyvalidationssuckin96/validation.rb

Overview

Base class to use when implementing validations.

Constant Summary collapse

DefaultOptions =

A hash of default options for the validation to use.

{}

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(validatable, options = {}) ⇒ Validation

Returns a new instance of Validation.

Parameters:

  • validatable (Object)

    An object to be validated

  • options (Hash) (defaults to: {})

    The options to set up the validation with



21
22
23
24
# File 'lib/whyvalidationssuckin96/validation.rb', line 21

def initialize(validatable, options = {})
  @validatable = validatable
  @options = self.class::DefaultOptions.merge(options)
end

Class Attribute Details

.nameObject

Returns the value of attribute name.



16
17
18
# File 'lib/whyvalidationssuckin96/validation.rb', line 16

def name
  @name
end

Instance Attribute Details

#optionsObject

The options the validation was initialized with



10
11
12
# File 'lib/whyvalidationssuckin96/validation.rb', line 10

def options
  @options
end

#validatableObject (readonly)

The object the validation is validating



13
14
15
# File 'lib/whyvalidationssuckin96/validation.rb', line 13

def validatable
  @validatable
end

Class Method Details

.new_subclass(name, def_block) ⇒ Object

Creates a new subclass of this class, used when defining custom validations with a block



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/whyvalidationssuckin96/validation.rb', line 27

def self.new_subclass(name, def_block)
  Class.new(self) do
    self.name = name.to_sym
    define_method(:validate, &def_block)
    private :validate

    def inspect
      "#<WhyValidationsSuckIn96::Validation subclass for validating '#{self.class.name}'> #{super}"
    end
  end
end

Instance Method Details

#failed?true, false

Has this validation failed?

Returns:

  • (true, false)


47
48
49
# File 'lib/whyvalidationssuckin96/validation.rb', line 47

def failed?
  @passed == false
end

#has_run?true, false

Has this validation run?

Returns:

  • (true, false)


53
54
55
# File 'lib/whyvalidationssuckin96/validation.rb', line 53

def has_run?
  @passed != nil
end

#messageObject

The failure message for this validation.



69
70
71
# File 'lib/whyvalidationssuckin96/validation.rb', line 69

def message
  @options[:message] || "failed validation"
end

#passed?true, false

Has this validation passed?

Returns:

  • (true, false)


41
42
43
# File 'lib/whyvalidationssuckin96/validation.rb', line 41

def passed?
  @passed == true
end

#validates?true, ...

Performs the validation, returning true or false if the validation passes or fails, or nil if the validation will not run.

Returns:

  • (true, false, nil)


60
61
62
63
64
65
66
# File 'lib/whyvalidationssuckin96/validation.rb', line 60

def validates?
  reset
  @passed = catch :validation_done do
    validate
    pass
  end
end