Upon creating an instance of a given ActiveRecord model object, I need to generate a shortish (6-8 characters) unique string to use as an identifier in URLs, in the style of Instagram’s photo URLs (like http://instagram.com/p/P541i4ErdL/, which I just scrambled to be a 404) or Youtube’s video URLs (like http://www.youtube.com/watch?v=oHg5SJYRHA0).
What’s the best way to go about doing this? Is it easiest to just create a random string repeatedly until it’s unique? Is there a way to hash/shuffle the integer id in such a way that users can’t hack the URL by changing one character (like I did with the 404’d Instagram link above) and end up at a new record?
You could do something like this:
random_attribute.rb
user.rb