Ruby on Railsアプリケーションでは、ユーザーがファイルをアップロードできるようにしていて、これらのファイルに短くランダムな英数字の名前を付けたいと考えています。 (例えば、 'g7jf8'または '3bp76')。これを行う最善の方法は何ですか?Rubyでランダムでユニークな文字列を生成する方法はありますか?
私は、元のファイル名とタイムスタンプからハッシュ/暗号化された文字列を生成することを考えています。次に、それが存在しないことを二重チェックするためにデータベースを照会します。そうであれば、別のものを生成し、繰り返す。
このアプローチで見られる問題は、重複した文字列の高い可能性がある場合、データベースベースの負荷がかなり増加する可能性があるということです。
同じ名前を同時に追加しようとする2つの要求の可能性のある競合条件があります。データベースはその列に対してユニークな制約を持つ必要があり、 'ActiveRecord :: RecordNotUnique'をキャッチする準備が必要です。 – mpartel
check http://stackoverflow.com/questions/5966910/generate-unique-rand-string-with-letters-and-numbers-in-lower-case – sameera207
「ランダム」名はセキュリティ上の目的を持っていますか?そうでない場合は、さらに多くのオプションがあります。 –