Module: ActiveModel::AttributesValidation

Included in:
ActiveRecord::Base
Defined in:
lib/active_model/attributes_validation.rb,
lib/active_model/attributes_validation/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Instance Method Summary collapse

Instance Method Details

#attributes_valid?(*attrs) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/active_model/attributes_validation.rb', line 7

def attributes_valid?(*attrs)
  errors.clear

  attr_validators = self.class.validators_on(*attrs).uniq
  specific_validators = attr_validators.collect do |validator|
    validator = validator.dup
    validated_attributes = validator.attributes & attrs
    validator.instance_variable_set(:@attributes, validated_attributes)
    validator
  end

  self_validation = ->{ specific_validators.each { |validator| validator.validate(self) } }

  if self.class.ancestors.include?(ActiveModel::Validations::Callbacks)
    run_callbacks(:validation) { self_validation.call }
  else
    self_validation.call
  end

  errors.empty?
end