module ActiveModel::AttributesValidation

Constants

VERSION

Public Instance Methods

attributes_valid?(*attrs) click to toggle source
# 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