module FFaker::BankUS

Public Instance Methods

account_number(min_digits: 9, max_digits: 17) click to toggle source
# File lib/ffaker/bank_us.rb, line 8
def account_number(min_digits: 9, max_digits: 17)
  FFaker.numerify('#' * rand(min_digits..max_digits))
end
routing_number() click to toggle source
# File lib/ffaker/bank_us.rb, line 12
def routing_number
  partial_routing_number = FFaker.numerify('########')
  ninth_digit = generate_ninth_digit(partial_routing_number)

  "#{partial_routing_number}#{ninth_digit}"
end

Private Instance Methods

generate_ninth_digit(num_string) click to toggle source
# File lib/ffaker/bank_us.rb, line 21
def generate_ninth_digit(num_string)
  # This leverages the `Modules 10, Straight Summation` used for routing_numbers
  # See http://www.sxlist.com/techref/ecommerce/bank/routingnumber/index.htm
  # for more details
  num_array = num_string.chars.map(&:to_i)
  (
    (7 * (num_array[0] + num_array[3] + num_array[6])) +
      (3 * (num_array[1] + num_array[4] + num_array[7])) +
      (9 * (num_array[2] + num_array[5]))
  ) % 10
end