すっかりiosの仕事がなくなるわ、web系のエンジニアがみんな辞めてAWSからRailsまで触るようになってしまって数ヶ月経ちました
メモがてら
結論
色々やったけど元のファイル名を入れるしかなかった
class ItemImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
def filename
"#{secure_token}_#{original_filename}" if original_filename.present?
end
protected
def secure_token
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
end
end
画像を一括upload
carriewaveを使うとmulitipartできた画像を一括でS3にuploadでできてDBに登録できるんだやったね!
https://qiita.com/ggtmtmgg/items/ba5f275c122c83013ea1
#できなかった
5個の画像をuploadしてもmodelをsaveした瞬間全部の画像が「aaaaa.jpg」と同じ名前で保存された
#原因
もうここに書いてるとおり
uploadのインスタンスがひとつだからひとつのファイル名になってた
filenameを呼び出す度に変えるようにしたらうまくいった
#それでもダメだった
S3にあげたときとDBに保存する時でファイル名が変わってた