If you use ActiveMerchant, it ActiveMerchant::Billing::CreditCardhas an instance method called display_numberthat does this, for example. XXXX-XXXX-XXXX-4338
If you do not, copy activemerchant:
def last_digits(number)
number.to_s.length <= 4 ? number : number.to_s.slice(-4..-1)
end
def mask(number)
"XXXX-XXXX-XXXX-#{last_digits(number)}"
end
credit_card_number = "1111111111111111"
display_number = mask credit_card_number
source
share