Если вы используете ActiveMerchant, ActiveMerchant::Billing::CreditCard
имеет метод экземпляра с именем display_number
, который делает это, например. XXXX-XXXX-XXXX-4338
Если нет, скопируйте 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