Compressing a hex string in Ruby/Rails

Posted by PreciousBodilyFluids on Stack Overflow See other posts from Stack Overflow or by PreciousBodilyFluids
Published on 2010-01-02T22:45:40Z Indexed on 2010/03/18 14:41 UTC
Read the original article Hit count: 266

Filed under:
|
|

I'm using MongoDB as a backend for a Rails app I'm building. Mongo, by default, generates 24-character hexadecimal ids for its records to make sharding easier, so my URLs wind up looking like:

example.com/companies/4b3fc1400de0690bf2000001/employees/4b3ea6e30de0691552000001

Which is not very pretty. I'd like to stick to the Rails url conventions, but also leave these ids as they are in the database. I think a happy compromise would be to compress these hex ids to shorter collections using more characters, so they'd look something like:

example.com/companies/3ewqkvr5nj/employees/9srbsjlb2r

Then in my controller I'd reverse the compression, get the original hex id and use that to look up the record.

My question is, what's the best way to convert these ids back and forth? I'd of course want them to be as short as possible, but also url-safe and simple to convert.

Thanks!

© Stack Overflow or respective owner

Related posts about ruby

Related posts about mongodb