Question

Quelle est la bonne façon dans Rails w CarrierWave en utilisant Fog pour supprimer / détruire les dossiers quand il y a des annexes / images?

Je suis en train de nettoyer quelques dossiers après une importation manquante d'images à Rackspace. Il y a quelques images manquantes et les pouces. Lorsque je tente de supprimer un enregistrement que j'obtiens une erreur

Fog :: Stockage :: :: Rackspace NotFound

Y at-il un cadre CarrierWave ou brouillard il plus tolérant à ce genre de scénarios?

Était-ce utile?

La solution

Je viens de croiser cette question et a trouvé la question initiale déposée ici: https: // GitHub. com / jnicklas / carrierwave / questions / 481 et la page wiki décrivant le correctif ici: https://github.com/jnicklas/carrierwave/wiki/How-To%3A-Silently-ignore-missing-files-on-destroy -ou-Ecraser

Mais je n'étais pas satisfait de la solution, je ne voulais pas avoir à ajouter ces 2 méthodes dans tous mes modèles qui utilisent un Uploader. J'ai tendance à écrire 1 Uploader de base et sous-classe que pour toute modification à des besoins spécifiques. Donc, je creusais dans ces méthodes: supprimer _ # {nom_colonne}! et remove_previously_stored _ # {nom_colonne} et le thème trouvé ici: https: //github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/mount.rb#L204 et https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/mount.rb#L204

Ces deux méthodes supprimer tout appel! sur le Uploader. Donc, la meilleure façon de résoudre le problème est de remplacer le supprimer! méthode dans le Uploader. Ensuite, il vous suffit de remplacer une méthode et 1 place. Mon overrride se présente comme suit:

class CloudfilesUploader < CarrierWave::Uploader::Base
  # Override to silently ignore trying to remove missing previous file
  def remove!
    begin
      super
    rescue Fog::Storage::Rackspace::NotFound
    end
  end
end

Cela devrait résoudre vos problèmes en essayant de re-télécharger une image et écrasez une image qui n'existe pas ou lorsque vous essayez juste et supprimer une image qui n'existe pas.

~ Tom

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