2014-05-10 11 views
7

Resimlerimi Carrierwave ve Fog ile S3'e yüklüyorum. Carrierwave ve Fog ile S3'de görüntü sürümünün olup olmadığını nasıl kontrol edebilirim?

version :thumb do 
    process :resize_to_limit => [90, 80], if: :is_resizable? 
end 

Şimdi küçük resim versiyonu varsa kontrol etmek için bir yöntem gerekir: yüklemede, ben de resmin küçük resim sürümünü oluşturmak.

Documentation, exists? yöntemini listeler.

asset.file.exists? # => true 

Ama hiç böyle "başparmak" sürümünü kullandığınızda:

asset.url(:thumb).file.exists? 

o olsun:

undefined method 'exists?' for #<String:0x007fcd9f9d9620> Ben orijinal versiyonunun varlığını kontrol etmek istiyorsanız bu aslında işleri :

cevap

17

bunu kullanın:

asset.thumb.file.exists? 

yerine: asset.url(:thumb).file.exists?

+0

sen version_exists kullanabilir? yöntem de. bkz. https://github.com/carrierwaveuploader/carrierwave/blob/master/lib/carrierwave/uploader/versions.rb#L152-L162 –

+3

'version_exists?' işlevini kullanmak aynı şey değildir. 'version_exists?', yalnızca sürümün yükleyici sınıfında tanımlandığını kontrol eder; Dosyanın gerçekten mevcut olup olmadığını kontrol etmez. – steakchaser

1

Doğru cevap:

asset.file.thumb.file.exists? 

yer dosya = mounted_uploader ve varlık = modeli

+0

Bu kod sorunu çözerse, her bir parçanın ne yaptığına dair açıklamalar sağlamak için bir miktar metin eklemelisiniz. Bu sayede, gelecekte benzer sorunlara sahip olanlara yardımcı olabilirsiniz. Ayrıca, cevabınıza oy vermeniz daha olasıdır. – lmo

İlgili konular