Class: ValidationAssertionCollector

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

Overview

:nodoc:

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass) ⇒ ValidationAssertionCollector

Returns a new instance of ValidationAssertionCollector.



23
24
25
# File 'lib/validation_assertion_collector.rb', line 23

def initialize(klass)
  self.klass = klass
end

Instance Attribute Details

#klassObject

Returns the value of attribute klass.



21
22
23
# File 'lib/validation_assertion_collector.rb', line 21

def klass
  @klass
end

Class Method Details

.define_method_for_validation_method(validation_method, validatable_class) ⇒ Object



8
9
10
11
12
13
# File 'lib/validation_assertion_collector.rb', line 8

def self.define_method_for_validation_method(validation_method, validatable_class)
  define_method validation_method.gsub(/^validates_/,'').to_sym do |attribute|
    assertions << ValidationAssertion.new(self.klass, validatable_class, attribute)
    define_methods_on_assertion_to_collect_options validatable_class, assertions.last
  end
end

.gather(klass, &block) ⇒ Object



2
3
4
5
6
# File 'lib/validation_assertion_collector.rb', line 2

def self.gather(klass, &block)
  collector = self.new(klass)
  collector.instance_eval(&block)
  collector.assertions
end

Instance Method Details

#assertionsObject



40
41
42
# File 'lib/validation_assertion_collector.rb', line 40

def assertions
  @assertions ||= []
end

#define_methods_on_assertion_to_collect_options(validatable_class, assertion) ⇒ Object



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

def define_methods_on_assertion_to_collect_options(validatable_class, assertion)
  validatable_class.all_understandings.each do |option|
    next if option == :if
    class << assertion; self; end.instance_eval do
      define_method option do |value|
        self.options.merge!(option=>value)
        self
      end
    end
  end
  assertion
end