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.