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
|