ユーザがアップロードしたファイルのファイル名を決定する際、ファイル名が衝突しないように 現在時刻(ミリ秒)からIDを発行するという方法を思いつきました。 色々ためしてみて、下記のコードが完成したのですが、現在時刻の数値を62進数に変換しただけなので「p2dhXa6」や「p2d9Wco」のようにファイルの先頭文字がほぼp2で固定されてしまいます。 このままでも良いのですが、ファイル名で利用出来る文字を使って、衝突しないユニークかつ視覚的にもランダムであり、文字列長がより短いIDを生成する方法はございますでしょうか。 現状のコード def uniqid() def dec62(num) table = [('0'..'9'),('a'..'z'),('A'..'Z')].map{|c| c.to_a }.flatten num > 61 ? dec62(num/62)+table[num%62
![rubyで衝突しないユニークな文字列を生成するには?](https://cdn-ak-scissors.b.st-hatena.com/image/square/f6bc393cd0b6bd2196935e603c5d031bd6ca6699/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fja%2FImg%2Fapple-touch-icon%402.png%3Fv%3D1cfb10b305ca)