rails notidentifiedbyimagemagickerror missingrequiredvalidatorerror game errors ruby-on-rails ruby-on-rails-3 paperclip

ruby on rails - notidentifiedbyimagemagickerror - Evitar que Paperclip borre/sobrescriba archivos adjuntos en la actualizaciĆ³n



paperclip::errors::missingrequiredvalidatorerror (4)

Debido a que los archivos adjuntos se definen a nivel de clase, Paperclip interpola los símbolos en sus cadenas utilizando su propia biblioteca de interpolación. Puedes crear tus propias interpolaciones usando esta biblioteca.

Yo agregaría un campo al modelo llamado attachment_version o algo similar, y luego incrementaré este número de versión cada vez que se cambie el archivo. Luego, cree una interpolación para él en un archivo de inicialización:

Paperclip.interpolates :version do |attachment, style| attachment.instance.attachment_version end

Ahora puedes usar :version en tus cadenas:

class Model < ActiveRecord::Base has_attached_file :something, :path => " :rails_root/public/somethings/etc/:version.:extension" end

Consulte la documentación de la wiki para más información.

[Actualizar]

Después de investigar un poco (vea los comentarios de esta respuesta), llegué a la conclusión de que Paperclip aún eliminará el archivo adjunto anterior debido al código al que se llama en Paperclip::Atachment#attach . Probablemente la mejor manera de lidiar con esto es crear un nuevo motor de almacenamiento basado en Paperclip::Storage::Filesystem y sobrescribir #flush_deletes . Tenga en cuenta que no hay forma en ese método de saber si un archivo se está poniendo en cola para ser eliminado debido al modelo al que pertenece o si se está cargando un nuevo archivo en su lugar.

Me resulta difícil descubrir cómo evitar que Paperclip elimine la versión anterior de un archivo adjunto (imagen).

Tengo un modelo, sitio, que tiene un archivo adjunto, logotipo. Me gustaría mantener los logos antiguos ya que estaré al tanto de los cambios en el modelo y me gustaría ver el historial de logos.

Estoy realizando un seguimiento de los cambios en otro modelo, que tiene una referencia a las rutas de archivos. Mi problema es que cuando se actualiza un sitio con un nuevo logotipo, Paperclip enjuaga primero el antiguo logotipo.

Me sorprende que no haya una opción que pueda cambiar para evitar que Paperclip vacíe el archivo adjunto anterior antes de crear el nuevo.

¿Algunas ideas?




lib / paperclip_monkey_patch.rb:

module Paperclip class Attachment def clear # nop #raise "hell" # op instance_write(:file_name, nil) instance_write(:content_type, nil) instance_write(:file_size, nil) instance_write(:updated_at, nil) end end end

Luego, agregue esta línea en la parte superior de cualquier archivo que haya eliminado los archivos adjuntos:

requiere ''paperclip_monkey_patch''

Gracias a Ruby Forum