Potresti rappresentare un ID esadecimale in una base maggiore di 16
per rendere più breve la sua rappresentazione di stringa. Ruby ha il supporto integrato per lavorare con le basi da 2
fino a 36
.
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
Per riconvertirlo in una stringa di 24 caratteri potresti fare qualcosa del genere:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
Per ottenere una migliore "compressione" potresti rappresentare l'id in base superiore a 36
. Ci sono librerie Ruby che ti aiuteranno in questo. all-your-base
gem è una di queste librerie.
Raccomando la base 62
rappresentazione in quanto utilizza solo 0-9
, a-z
e A-Z
caratteri, il che significa che è protetto dagli URL per impostazione predefinita.