Klasör yapısını yeniden düzenlemek için dosyaları CarrierWave
kullanarak S3 kabımın etrafına taşımayı deniyorum.Varolan bir klasör hiyerarşisini CarrierWave ile nasıl yeniden düzenleyebilirim?
Bir sınıf için tüm görüntülerin adlı bir klasöre yüklenmekte olduğu mevcut bir Rails uygulamasına geldim. Bu, iki kullanıcının aynı dosya adına sahip farklı resimler yüklediğinde, ikinci görüntünün ilkin üzerine yazılması sorunlara neden olur. Bunu çözmek için, her görüntüyü ActiveRecord
nesne örneğine göre kendi dizinine yerleştirmek için klasörleri yeniden düzenlemek istiyorum. Dosya yüklemelerini yönetmek için CarrierWave
kullanıyoruz. Ben yeni dosya depolama düzeni yansıtacak şekilde yöntemini modifiye
def store_dir
"uploads"
end
:
eski yükleyici kodu aşağıdaki yöntemi vardı
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Bu yeni görüntüler için harika çalışıyor, ancak url kırar eski görüntüler için. Mevcut resimler, modelini değiştirdiğimde hemen yeni klasörün içinde olmak üzere URL'lerini bildiriyor, görüntü dosyaları ise 'da saklanıyor.
> object.logo.store_dir
=> "uploads/object/logo/133"
Bu doğru değil. Bu nesne logosunu /uploads
numaralı telefondan bildirmelidir.
Çözümüm, resim dosyalarını taşımak için bir komut dosyası yazmaktır, ancak dosyaları taşımak için CarrierWave uygulamasında doğru yöntemleri bulamadım. Benim komut dosyası aşağıdaki gibi görünecektir:
MyClass.all.each |image|
filename = file.name #This method exists in my uploader, returns the file name
#Move the file from "/uploads" to "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Ben yeni bir konuma dosya taşımak için Senaryomun hattında üç yapmak gerekir?
Hiç bir çözüm buldunuz mu? Bende aynı sorun var. –
Bu, sis kullanmıyorsanız, belki de sizin için geçerli değildir, ancak bu, bulduğum en iyi çözümdür ve oldukça zor görünüyordum: http: //stackoverflow.com/questions/19038733/need-to- dosya-in-an-s3-bucket-carrierwave-f değiştirmek-depolama-dizin- –