Sha256: ec0e361e263287793f352843e0af1e690c293703c70605902e4085a236a5c062

Contents?: true

Size: 476 Bytes

Versions: 8

Compression:

Stored size: 476 Bytes

Contents

module BraintreeRails
  class Luhn10Validator < ActiveModel::EachValidator
    def validate_each(record, attribute, value)
      return unless record.errors[attribute].blank?
      record.errors.add(attribute, 'failed Luhn 10 validation') if invalid_luhn_10_number?(value)
    end

    private
    def invalid_luhn_10_number?(number)
      number.to_s.split('').reverse.each_slice(2).sum{|odd, even| [odd, even.to_i*2].join.split('').sum(&:to_i) } % 10 != 0
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
braintree-rails-1.4.1 lib/braintree_rails/luhn10_validator.rb
braintree-rails-1.4.0 lib/braintree_rails/luhn10_validator.rb
braintree-rails-1.3.0 lib/braintree_rails/luhn10_validator.rb
braintree-rails-1.2.3 lib/braintree_rails/luhn10_validator.rb
braintree-rails-1.2.2 lib/braintree_rails/luhn10_validator.rb
braintree-rails-1.2.1 lib/braintree_rails/luhn10_validator.rb
braintree-rails-1.2.0 lib/braintree_rails/luhn10_validator.rb
braintree-rails-1.1.0 lib/braintree_rails/luhn10_validator.rb