RailsのCarrierWaveのファイル名は、デフォルトでは元々のファイル名が使われます。
これを好きな名前に変えるには、filename
メソッドにネーミングルールを定義します。
Case1. 固定ファイル名にする
ファイル名が”something.拡張子
“となるように定義してみます。
rails generate uploader
コマンドで作成したUploaderクラスを開き、filename
メソッドを実装します。元々の拡張子はfile.extension
で取得できます。
def filename "something.#{file.extension}" if original_filename.present? end
完成です。
Case2. ユニークなファイル名にする
次は、ファイル名をUUID ( Universally Unique Identifier )
にしてみます。UUIDは非常にユニークな重複しない値です。
UUIDを作成するには、SecureRandom.uuid
メソッドを使います。
def filename "#{SecureRandom.uuid}.#{file.extension}" if original_filename.present? end
これで、UUID付きのファイル名になります。
cfdb0fb7-b4dc-4802-b812-038e92f2c34e.jpg
次のサイトに、より安全なUUIDの使い方が書いてあります。
How to: Create random and unique filenames for all versioned files