Podría representar una identificación hexadecimal en una base superior a 16
para acortar su representación de cadena. Ruby tiene soporte incorporado para trabajar con bases de 2
hasta 36
.
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
Para volver a convertirlo en una cadena de 24 caracteres, podría hacer algo como esto:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
Para lograr una mejor "compresión", podría representar la identificación en una base superior a 36
. Hay bibliotecas de Ruby que te ayudarán con eso. all-your-base
gem es una de esas bibliotecas.
Recomiendo base 62
representación ya que solo usa 0-9
, a-z
y A-Z
caracteres, lo que significa que la URL es segura de forma predeterminada.