ruby on rails - rails - ¿Cómo le digo a un clip para que no guarde el archivo original?
paperclip validates (3)
¿Cómo le digo a Paperclip que no guarde el archivo original cuando se carga? O incluso mejor, ¿almacenar una versión escalada del archivo como el original?
Creo que simplemente puede definir un estilo para: original para que un clip de papel reemplace el original con ese tamaño.
:styles => { :original => ''300x168>'', :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, ...}
La solución de Cris G puede ser agradable en la mayoría de los casos simples, pero tiene limitaciones. considere que: estilo: el proceso original de Paperclip primero de todos los demás, por lo que después de eso se actualizó: la imagen original (mucho más pequeña ahora) será la fuente para el siguiente procesamiento. Por lo tanto, estás obligado a mantener: el estilo original como el mejor resuelto. La situación empeora, ya que necesita recortar imágenes con un procesador: es la situación en la que realmente necesita una calidad original real. )
Por lo tanto, le recomendaría una solución bastante cruda (debe averiguar cómo obtener todos los adjuntos del modelo):
after_save :reprocess_attach
private
def reprocess_attach
if self.<atch_name>.present? && Pathname.new(self.<atch_name>.path).exist?
self.<atch_name>.save
File.unlink(self.<atch_name>.path)
end
end
no le importa lo que el procesamiento estaba detrás del escenario. Solo mata el archivo original)
Paperclip siempre guarda un original de forma predeterminada, pero creo que si lo elimina de la migración, no intentará guardarlo.
Guardo un original a escala en mi modelo para que los usuarios puedan editar su imagen más adelante. Mi modelo se ve así:
:styles => { :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, :resized_thumb => {:geometry => "115x70>"}, :deal => {:geometry => "64x56#"},
:cropped_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}#", :jcrop => true},
:resized_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}>"},
:orig => ''300x168>'', #this is the scaled original that I call later
:cropped_orig => {:geometry => ''300x168#'', :jcrop => true},
:resized_orig => {:geometry => ''300x168>''} },
:processors => [:jcropper]