class TaiwanValidator::IdValidator

Constants

DEPRECATED_FIRST_LETTER
FIRST_LETTER
MULTIPLIER
VALID_FIRST_LETTER

Public Class Methods

valid?(id) click to toggle source
# File lib/taiwan_validator/id_validator.rb, line 16
def valid?(id)
  id = id.to_s
  return false if id.size != 10 || !(VALID_FIRST_LETTER.keys.include?(id[0])) || (id[1..9] =~ /\A\d+\Z/).nil?

  digits = (VALID_FIRST_LETTER[id[0]].to_s.chars + id[1..9].to_s.chars).map(&:to_i)
  results = digits.zip(MULTIPLIER).map { |r| r.inject(&:*) }.inject(&:+)

  results % 10 == 0
end

Public Instance Methods

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