class CuitValidator

Public Class Methods

default_options() click to toggle source
# File lib/cuit_validator.rb, line 4
def self.default_options
  @@default_options
end
valid?(value, options = {}) click to toggle source
# File lib/cuit_validator.rb, line 8
def self.valid?(value, options = {})
  unless value.empty?
    value.gsub!('-','')
    unless value.length != 11
      xy, dni, z = value[0, 2], value[2, 8], value[10, 1]
      acum = 0
      secuence = [5,4,3,2,7,6,5,4,3,2]
          
      "#{xy}#{dni}".split('').each_with_index { |num, i| acum += num.to_i * secuence[i] }

      z_calculated = (11 - (acum % 11) )

      (z_calculated.to_i == z.to_i)
    end
  else
    true  if options[:allow_empty]
  end
end

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# File lib/cuit_validator.rb, line 27
def validate_each(record, attribute, value)
  options = @@default_options.merge(self.options)
  unless self.class.valid?(value, options)
    record.errors.add(attribute, options[:message] || :invalid)
  end
end