2014-05-10 11 views
7

Sto caricando le mie immagini con Carrierwave e Fog su S3. Su l'upload ho anche creare una versione miniatura dell'immagine:Come verificare se esiste una versione di immagine su S3 con Carrierwave e Fog?

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

Ora ho bisogno di un metodo per verificare se la versione miniatura esiste.

Il Documentation elenca il metodo exists?. Questo in realtà funziona, se voglio verificare l'esistenza della versione originale:

asset.file.exists? # => true 

Ma quando uso la versione "pollice" come questo:

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

che ottengo:

undefined method 'exists?' for #<String:0x007fcd9f9d9620> :

risposta

17

Utilizzare questa:

asset.thumb.file.exists? 

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

+0

è possibile utilizzare version_exists? metodo anche. vedi https://github.com/carrierwaveuploader/carrierwave/blob/master/lib/carrierwave/uploader/versions.rb#L152-L162 –

+3

L'uso di 'version_exists?' non è la stessa cosa. 'version_exists? 'controlla solo che la versione sia stata definita sulla classe di uploader stessa; non controlla se il file è effettivamente disponibile. – steakchaser

1

La risposta corretta è:

asset.file.thumb.file.exists? 

dove file = mounted_uploader e asset = modello

+0

Se questo codice risolve il problema, è necessario aggiungere del testo per fornire spiegazioni su ciò che ogni pezzo sta facendo. In questo modo, puoi aiutare quelli con problemi simili in futuro. Inoltre, è più probabile che tu abbia i voti per la tua risposta. – lmo

Problemi correlati