2011-04-08 2 views

risposta

8

Quando aggiunto Paperclip al modello si aggiunge righe specifiche graffetta, i miei sono

cover_file_name 
cover_content_type 
cover_file_size 
cover_updated_at 

Poi controllo se è nullo o non

Foo_Class.cover_file_name.nil? 
12

If foo.image? restituisce true, quindi file caricato .

+7

Ora è "foo.image.exists?" – Nilloc

+1

cosa succede se si imposta ': default_url => 'missing.png''? sarebbe considerato come "foo.image.exists?" – bershika

+0

la risposta è: no, restituirà false – bershika

6

Penso che la soluzione corretta sia utilizzare il metodo file?.

foo.image.file?

http://rdoc.info/github/thoughtbot/paperclip/Paperclip/Attachment#file%3F-instance_method

utilizzando esiste? farà una richiesta al server per verificare se il file è lì, che può essere piuttosto lento, soprattutto se si trova su un server diverso o su S3.

utilizzando foo.image_file_name.nil? è probabilmente lo stesso del file? sotto le coperte, ma non vuoi dipendere dall'implementazione della graffetta, che potrebbe un giorno cambiare.

1

Se questo è a mio modello

has_attached_file :avatar, :styles => {:logo => "230x50>", :card_image => "180x50>"} 

È possibile controllare se l'immagine viene caricato per un utente cioè @user

<%= @user.avatar.exists? %> 

Ciò restituirà valore booleano.

+0

Se il tuo file è su S3, questo attiverà una richiesta per S3. –

0

si supponga di voler verificare la presenza di attacco (immagine) della per la 1 ° fila in modello Foo:

image_present = Foo.first.image? 

Ciò restituisce true se l'allegato è presente.