Du kan repræsentere et hexadecimalt id i en base højere end 16 for at gøre dens strengrepræsentation kortere. Ruby har indbygget support til at arbejde med baser fra 2 op til 36 .
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
For at konvertere den tilbage til en 24-tegns streng kan du gøre noget som dette:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
For at opnå bedre "komprimering" kan du repræsentere id'et i base højere end 36 . Der er Ruby-biblioteker, der vil hjælpe dig med det. all-your-base
gem er et sådant bibliotek.
Jeg anbefaler base 62 repræsentation, da den kun bruger 0-9 , a-z og A-Z tegn, hvilket betyder, at det er URL-sikkert som standard.