タグ

RubyとUUIDに関するo-hayatoのブックマーク (1)

  • rubyで衝突しないユニークな文字列を生成するには?

    ユーザがアップロードしたファイルのファイル名を決定する際、ファイル名が衝突しないように 現在時刻(ミリ秒)から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で衝突しないユニークな文字列を生成するには?
  • 1