10

Tengo un modelo de raíles usando clip que se parece a esto:Rieles: ¿Clip de papel que valida el tamaño del accesorio cuando no debería ser?

has_attached_file :image, :styles => { :normal => ['857x392#', :png] }, 
        :url => '/assets/pages/:id/:basename.:extension', 
        :path => ':rails_root/public/assets/pages/:id/:basename.:extension' 

    validates_attachment_size :image, :less_than => 2.megabytes 

Al intentar crear un registro de este modelo sin un archivo adjunto para cargar, se devuelve el error de validación:

hubo problemas con los campos siguientes:

* Image file size file size must be between 0 and 2097152 bytes. 

que he intentado pasar tanto : allow_blank => true y: allow_nil => true después de la declaración de validación en el modelo, pero ninguno ha funcionado.

¿Cómo puedo permitir que el parámetro: imagen esté en blanco?

Respuesta

1

validación de Paperclip sólo comprueba el rango, y no se preocupa por la :allow_nil => true

Lo que puede hacer es tratar de establecer :min => nil o :min => -1, tal vez eso va a funcionar.

Actualización: Esto no funcionará en la última versión del Paperclip ya que han cambiado la forma de trabajo de las validaciones. Lo que podría intentar en su lugar es:

validates_attachment_size :image, :less_than => 2.megabytes, 
    :unless => Proc.new {|model| model.image } 
+0

Acabo de probar esto, no funciona. – ground5hark

+0

hmm, ¿qué versión de paperclip usas (puedes encontrar la versión en vendor/plugins/paperclip/lib/paperclip.rb)? –

+0

Intenté resolver esto hace unos minutos. Regresé aquí para informar los resultados y, por desgracia, son casi idénticos a los tuyos. Para cualquier otra persona con este problema, también puede usar el hash: Proc.new {| model | modelo [: imagen] .nil? } – ground5hark

6
validates_attachment_size :image, :less_than => 25.megabytes, 
          :unless => Proc.new {|m| m[:image].nil?} 

funciona perfectamente para mí

9

validates_attachment_size: Imagen,: en => 0.megabytes..2.megabytes

funciona ahora

0

Pruebe el siguiente código.

validate :image_present 

def image_present 
    if image.present? && image_file_size < 2.megabytes 
    errors.add(:file_size, "file size must be between 0 and 2 megabytes.") 
    end 
end 
Cuestiones relacionadas