Question

J'ai une jolie petite classe « photos » qui a joint les images. Quand je vais à la page pour trier l'ordre de photos, il itère que chaque photo, définit la nouvelle valeur « de tri », et l'enregistre. Tout bien jusqu'à présent.

Le problème est, je l'ai remarqué ce comportement est assez lent. Il s'avère, la vignette attachment_fu recharge à chaque enregistrement -. Peu importe si oui ou non il y a de nouvelles données d'image pour travailler avec

Il est évident que ce système a été bien pensé, donc je ne reste à supposer qu'une disposition existe pour cette situation. Comment puis-je dire attachment_fu ne pas régénérer les vignettes quand il est pas approprié?

Merci, - Matchu

Modifier Je viens de me rappeler que, pour cette situation particulière, je peux utiliser update_attribute pour esquiver tous les autres validations et callbacks. Cependant, ce n'est pas vraiment une réponse viable à l'ensemble grand scénario. Qu'est-ce que je manque?

Était-ce utile?

La solution

entra et piraté attachment_fu un peu, et réécrit le comportement de save_attachment?. À peu près, j'ai ajouté quelques nouvelles conditions: en plus d'un fichier temporaire existant, l'une des conditions suivantes doivent être:

  1. Aucun fichier pour l'image existe déjà (en utilisant l'attribut full_filename).
  2. Les données d'image a été explicitement mis à jour en utilisant la méthode uploaded_data=.
  3. L'image est une miniature.

Il passe tous les trois cas de test - nouveaux ajouts photo, modifier des images photo et l'édition des données de photos sans image - mais je n'ai pas vraiment testé dans la nature pour l'instant. Je vais probablement faire quelques corrections; nous verrons ce qui se passe.

Autres conseils

Le fil moyennement utile, je l'ai vu sur ce sujet est ici:

http://groups.google.com/group/rubyonrails -Parlez / browse_thread / fil / 709d97e06b373786

Je pense que la solution de Matchu est probablement la bonne avec un examen rapide du code attachment_fu. J'aimerais si Matchu pourrait partager un patch ou un extrait de son save_attachment modifié? méthode. Je suis sur le point de creuser dans ce moi-même, puisque cela est devenu un problème pour moi et ce sera probablement moins de travail que le remplacement attachment_fu entièrement ...

Mise à jour

Avec le contour de Matchu, je suis venu avec un court (si inélégant) solution qui semble fonctionner après le test de la lumière.

Je modifed save_attachment? dans attachment_fu / attachment_fu.rb:

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

... pour vérifier les conditions Matchu Disposées. Je ne pouvais pas trouver une façon élégante de dire si les données avaient été transmises directement à la méthode de uploaded_data = setter (si quelqu'un a une meilleure façon de faire, je suis toutes les oreilles, je suis toujours un rubis / rails Noob ) donc j'ai aussi ajouté une ligne à uploaded_data = pour définir la @active_upload variable globale:

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

Hope qui aide, et si quelqu'un a une façon plus élégante de gérer ce que je faisais là-bas avec la variable globale, j'aimerais l'entendre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top