2011-04-08 9 views
8

¿sabes si hay algún método para saber si la imagen se ha subido?¿Cómo saber si una imagen se ha subido o no? - Paperclip

Quiero decir, tengo un Foo_Class, y esta clase puede tener una imagen adjunta, pero su presencia no es necesaria. ¿Hay alguna manera de saber si una instancia particular de esa clase tiene la imagen o no?

Gracias!

Respuesta

8

Al haber agregado clip para su modelo se añaden filas específicas clip, las minas son

cover_file_name 
cover_content_type 
cover_file_size 
cover_updated_at 

Luego comprobamos si es nula o no

Foo_Class.cover_file_name.nil? 
12

If foo.image? vuelve verdad, entonces el archivo subido .

+7

Ahora es 'foo.image.exists?' – Nilloc

+1

¿Qué pasa si has establecido ': default_url => 'missing.png''? sería eso considerado como 'foo.image.exists?' – bershika

+0

la respuesta es: no, devolverá falso – bershika

6

Creo que la solución adecuada es utilizar el método file?.

foo.image.file?

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

usando existe? hará una solicitud al servidor para verificar si el archivo está allí, lo que puede ser bastante lento, especialmente si está en un servidor diferente o en S3.

usando foo.image_file_name.nil? es probablemente lo mismo que el archivo? bajo las sábanas, pero no quiero depender de la implementación del clip, que podría cambiar algún día.

1

Si esto es en mi modelo

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

Puede comprobar si se carga la imagen para un usuario es decir @user

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

Esto devolverá valor booleano.

+0

Si su archivo está en S3, esto generará una solicitud para S3. –

0

Supongamos que desea comprobar la presencia de fijación (imagen) de la primera fila en el modelo de Foo:

image_present = Foo.first.image? 

Esto devuelve verdadero si el archivo adjunto está presente.

Cuestiones relacionadas