J'utilise MongoDB comme backend pour une application Rails que je construis. Mongo, par défaut, génère 24 caractères hexadécimaux ids pour ses enregistrements pour rendre plus facile sharding, donc mes URL vent ressembler:Compression d'une chaîne hexadécimale dans Ruby/Rails
example.com/companies/4b3fc1400de0690bf2000001/employees/4b3ea6e30de0691552000001
Ce qui est pas très jolie. Je tiens à respecter les conventions url Rails, mais aussi laisser ces identifiants tels qu'ils sont dans la base de données. Je pense qu'un heureux compromis serait de compresser ces ids hexagonaux à des collections plus courtes en utilisant plus de caractères, de sorte qu'ils chercherais quelque chose comme:
example.com/companies/3ewqkvr5nj/employees/9srbsjlb2r
Puis, dans mon contrôleur j'inverser la compression, obtenir l'ID hexadécimal d'origine et l'utiliser pour rechercher le disque.
Ma question est, quelle est la meilleure façon de convertir ces id et-vient? Je voudrais bien sûr qu'ils soient aussi courts que possible, mais aussi sûrs d'url et simples à convertir.
Merci!
Comment est-ce que je ferais ceci? J'ai essayé d'utiliser Base64.encode64 sur les identifiants de chaîne, mais cela les rend plus longs. – PreciousBodilyFluids
Cet extrait montre comment cela peut être fait http://rubyforge.org/snippet/detail.php?type=snippet&id=33 –
Base64.encode64 rend les identifiants plus longs car vous les utilisez en tant que chaînes au lieu de données binaires. – epochwolf