Sha256: ac15b931dbf67c275f42eb59634bafbdabf24259a1e44b70dc5da02fac92100b
Contents?: true
Size: 737 Bytes
Versions: 5
Compression:
Stored size: 737 Bytes
Contents
module BraintreeRails class Luhn10Validator < ActiveModel::Validator def validate(record) record.errors.add(attribute, 'must be an integer') unless valid_integer?(value(record)) record.errors.add(attribute, message) unless valid_luhn_10_number?(value(record)) end private def valid_integer?(number) number =~ /^\d+$/ end def valid_luhn_10_number?(number) number.split('').reverse.each_slice(2).sum{|odd, even| [odd, even.to_i*2].join.split('').sum(&:to_i) } % 10 == 0 end def attribute options[:attribute] end def value(record) record.send(attribute).to_s end def message options[:message] || "failed Luhn 10 validation." end end end
Version data entries
5 entries across 5 versions & 1 rubygems