2011-07-02 9 views
9

He encontrado que Paperclip puede validar el tipo de contenido del archivo, es decir, image/jpeg, pero quiero validar específicamente la extensión. Esto es porque estoy trabajando con una extensión oscura que no obtendrá un tipo de contenido consistente. Alguien sabe si esto es factible, o una buena manera de hacer esto?Validar la extensión en Paperclip - Ruby on Rails

Respuesta

16

Adivina, no hay necesidad de validarlo con el método del clip. Se puede utilizar en lugar algo así como:

has_attached_file :attachment 
validates_format_of :attachment_file_name, :with => %r{\.(docx|doc|pdf)$}i 

Editar:

Alternativamente, para validarlo con un clip:

validates_attachment_content_type :attachment, :content_type => 'text/plain' 

^va a generar errores de desadaptación de tipo de contenido de forma automática.

+3

Gracias, esto funcionó. Seguimiento simple: ¿cómo se puede personalizar el mensaje de error? Esto no parece funcionar: validates_format_of: attachment_file_name,: with =>% r {\. (Txt) $} i,: message => "Solo se pueden cargar archivos .txt". – Geoff

+0

¡Eso es raro! pero de todos modos revise la edición para la solución alternativa. –

+0

La segunda alternativa aquí también probablemente aceptará archivos con otras terminaciones de archivo que tengan el tipo MIME "text/plain". Se puede encontrar una cantidad de tales terminaciones de archivos, p. en [http://reference.sitepoint.com/html/mime-types-full](http://reference.sitepoint.com/html/mime-types-full). – lossius