module ActiveModel::Validations::ClassMethods

Public Instance Methods

dont_validate(*attributes) click to toggle source
# File lib/dont_validate/activemodel.rb, line 6
def dont_validate(*attributes)
  defaults = attributes.extract_options!
  validations = defaults.slice!(*_validates_default_keys)
  validation_classes = validations.keys.map {|key| "#{key.to_s.camelize}Validator"}

  raise ArgumentError, "You need to supply at least one attribute" if attributes.empty?

  defaults.merge!(:attributes => attributes)

  symbolized_attributes = attributes.map(&:to_sym)

  _validators.each do |attribute, validators|

    validators.each do |validator|
      next if !validator.respond_to?(:attributes) or validator.attributes.empty?
      next unless validation_classes.empty? or validation_classes.include?(validator.class.to_s.demodulize)
      
      validator.attributes.reject! {|attr| symbolized_attributes.include?(attr.to_sym) }

      args = [validator, validator.options.dup]

      skip_callback(:validate, *args)
    end

    validators.reject! {|validator| validator.attributes.empty? }

    _validators.delete(attribute) if validators.empty?
  end

  true
end