Pregunta

Tengo un pequeño "fotos" de clase que se adjunta imágenes. Cuando voy a la página de orden de clasificación de las fotos, itera aunque cada foto, establece el nuevo valor 'tipo', y lo guarda. Todo bien hasta ahora.

El problema es que me he dado cuenta que este comportamiento es bastante lento. Resulta que, attachment_fu vuelve a cargar la imagen en miniatura en cada salvar -. Independientemente de si hay o no nuevos datos de imagen para trabajar con

Es evidente que este sistema ha sido bien pensado y salida, así que estoy sólo ha dejado de asumir que existe una disposición de esta situación. ¿Cómo le digo attachment_fu no para regenerar las miniaturas cuando no es apropiado?

Gracias, - Matchu

Editar acabo de recordar que, para esta situación particular, puedo usar update_attribute de esquivar todas las validaciones y otras devoluciones de llamada. Sin embargo, esto no es realmente una solución viable para todo el escenario grande. ¿Qué me falta?

¿Fue útil?

Solución

entró y hackeado attachment_fu un poco, y volvió a escribir el comportamiento save_attachment?. Más o menos, he añadido algunas nuevas condiciones: además de un archivo temporal existente, una de la siguiente debe ser verdadera:

  1. No hay archivo para la imagen ya existe (con el atributo full_filename).
  2. Los datos de imagen se actualiza de forma explícita usando el método uploaded_data=.
  3. La imagen es una imagen en miniatura.

Se pasa los tres casos de prueba - nuevas cargas de fotos, imágenes de edición de fotos y edición de datos de fotos sin imagen - pero realmente no he probado esto en la naturaleza por el momento. Probablemente voy a tener que hacer algunas correcciones; vamos a ver qué pasa.

Otros consejos

El hilo sólo moderadamente útil que he visto sobre este tema está aquí:

http://groups.google.com/group/rubyonrails -Habla / browse_thread / hilo / 709d97e06b373786

Creo que la solución de Matchu es probablemente la correcta con una revisión rápida del código attachment_fu. Me encantaría que Matchu podría compartir un parche o un fragmento de su save_attachment modificado? método. Estoy a punto de cavar en esto por mi cuenta, ya que este se ha convertido en un problema para mí y probablemente será menos trabajo que reemplazar por completo attachment_fu ...

Actualizar

Con el contorno del Matchu, se me ocurrió una solución a corto (si es poco elegante) que parece funcionar después de la prueba de luz.

Me Modifed save_attachment? en attachment_fu / attachment_fu.rb:

def save_attachment?
  return false unless (thumbnail || !full_filename || @active_upload) #added
  File.file?(temp_path.to_s)
end

... para comprobar las condiciones Matchu establecidos. No podía subir con una manera elegante de decir si los datos se han pasado a lo largo de la uploaded_data = método de selección (si alguien tiene una mejor manera de hacer esto, soy todo oídos; Todavía estoy un rubí / carriles novato ) por lo que también añadió una línea para uploaded_data = para establecer el @active_upload variable global:

def uploaded_data=(file_data)
  return nil if file_data.nil? || file_data.size == 0
  self.content_type = file_data.content_type
  self.filename     = file_data.original_filename if respond_to?(:filename)
  @active_upload=true # added
  if file_data.is_a?(StringIO)
    file_data.rewind
    self.temp_data = file_data.read
  else
    self.temp_path = file_data
  end
end

Esperamos que ayuda, y si alguien tiene una forma más elegante de manejar lo que hice allí con la variable global, me encantaría escucharlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top