Você pode representar um id hexadecimal em uma base maior que
16
para tornar sua representação de string mais curta. Ruby tem suporte embutido para trabalhar com bases de 2
até 36
. b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
Para convertê-lo de volta para uma string de 24 caracteres, você pode fazer algo assim:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
Para obter uma "compressão" melhor, você pode representar o id na base superior a
36
. Existem bibliotecas Ruby que o ajudarão com isso. all-your-base
gem é uma dessas bibliotecas. Eu recomendo a base
62
representação, pois usa apenas 0-9
, a-z
e A-Z
caracteres, o que significa que é seguro para URL por padrão.