これは、UUIDを取得するための私のコードです。
def manage_id
self.id = UUIDTools::UUID.random_create().to_s.upcase if self.id.blank?
end
これは、私のオブジェクトの主キーに対して完全に機能します。
私の問題は、アップロードされたファイルにUUIDで名前を付けたいということです...そして、異なるアップロードに対して同じUUIDを取得します。たとえば、UUIDがあり、2分後に別のオブジェクトで同じUUIDがあります。
これは私の画像に名前を付けるためのクラスコードです:
:filename => "#{UUIDTools::UUID.random_create().to_s.upcase}.jpg" }
UUIDを生成するときに何が問題になる可能性があるのかわかりません...
私は開発に問題はありません!!!
編集1:問題はUUID自体にあるのではなく、タイムスタンプでも同じです...(そして本番環境でのみ)
編集2:私は問題を見つけました。設定:
config.cache_classes = true
プロダクションモードでの問題です。それは確かにUUIDをメモリのどこかに保持しています。
(パフォーマンスのために)本番モードではfalseに切り替えることができないと思うので、このプラグイン名機能のキャッシュを非アクティブ化する最良の方法は何ですか?
編集3:モデルの完全なコードを追加します
class Product < ActiveRecord::Base
file_column :image, {:magick => { :versions => { "tiny" => "70x70", "small" => "160x240", "high" => "640x960" }}, :store_dir => "public/upload/wine/image", :web_root => "upload/", :filename => "#{UUIDTools::UUID.timestamp_create().to_s.upcase}.jpg" }
end
したがって、前述したように、生成されたUUIDは本番環境にキャッシュされます。このモデルまたはプラグインfile_columnを強制的にキャッシュしないようにする方法がわかりませんか?