Class: BraintreeRails::Validator

Inherits:
ActiveModel::Validator
  • Object
show all
Defined in:
lib/braintree_rails/validator.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeValidator

Returns a new instance of Validator.



30
31
32
# File 'lib/braintree_rails/validator.rb', line 30

def initialize(*)
  self.class.setup
end

Class Method Details

.collect_validations(&block) ⇒ Object



22
23
24
# File 'lib/braintree_rails/validator.rb', line 22

def self.collect_validations(&block)
  block.present? ? block.call(default_validations) : default_validations
end

.default_validationsObject



18
19
20
# File 'lib/braintree_rails/validator.rb', line 18

def self.default_validations
  self::Validations.deep_dup
end

.model_classObject



26
27
28
# File 'lib/braintree_rails/validator.rb', line 26

def self.model_class
  name.chomp('Validator').constantize
end

.reset_validationsObject



8
9
10
# File 'lib/braintree_rails/validator.rb', line 8

def self.reset_validations
  model_class.reset_callbacks(:validate)
end

.set_validations(validations) ⇒ Object



12
13
14
15
16
# File 'lib/braintree_rails/validator.rb', line 12

def self.set_validations(validations)
  validations.each do |validation|
    model_class.validates(*validation)
  end
end

.setup(&block) ⇒ Object



3
4
5
6
# File 'lib/braintree_rails/validator.rb', line 3

def self.setup(&block)
  reset_validations
  set_validations(collect_validations(&block))
end

Instance Method Details

#validate(record) ⇒ Object



34
35
# File 'lib/braintree_rails/validator.rb', line 34

def validate(record)
end

#validate_association(record, name) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/braintree_rails/validator.rb', line 37

def validate_association(record, name)
  record.instance_eval do
    association = record.send(name)
    return unless association.present?
    if association.invalid?
      errors.add(name, "is invalid")
      association.errors.full_messages.each do |message|
        errors.add(:base, message)
      end
    end
  end
end