Frage

Was ist der richtige Weg in Rails W Carrierwave mit Nebel, um Datensätze zu löschen/zu zerstören, wenn fehlende Anhänge/Bilder fehlen?

Ich versuche nach einem fehlenden Import von Bildern in Rackspace ein paar Datensätze aufzuräumen. Es gibt ein paar fehlende Bilder und Daumen. Wenn ich versuche, einen Datensatz zu löschen, erhalte ich einen Fehler

Nebel :: Storage :: Rackspace :: NotFound

Gibt es eine Carrierwave- oder Nebeleinstellung, um diese Art von Szenarien toleranter zu machen?

War es hilfreich?

Lösung

Ich bin gerade auf dieses Problem gestoßen und fand das hier eingereichte ursprüngliche Problem: https://github.com/jnicklas/carrierwave/issues/481 und die Wiki -Seite, die das Fix hier beschreibt: https://github.com/jnicklas/carrierwave/wiki/how-toage%3a-nently-ignore-missing-files-on-destroy-or-overwrite

Ich war jedoch nicht zufrieden mit der Lösung, ich wollte diese beiden Methoden nicht in alle meine Modelle hinzufügen müssen, die einen Uploader verwenden. Ich neige dazu, 1 Basis -Uploader und Unterklasse zu schreiben, die für alle Änderungen an bestimmten Bedürfnissen. Also habe ich in diese Methoden ausgegraben: Entfernen Sie _#{column_name}! und remove_previous_stored _#{column_name} und fand hier ein Thema: https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/mount.rb#l204 und https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/mount.rb#l204

Beide Methoden rufen einfach REMET REMET an! Auf dem Uploader. Der einfachste Weg, das Problem zu beheben, besteht darin, das Entfernen zu überschreiben! Methode im Uploader. Dann müssen Sie nur eine Methode und an einem Ort überschreiben. Meine Überschreibung sieht aus wie folgt:

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

Dies sollte Ihre Probleme lösen, wenn Sie versuchen, ein Bild erneut zu laden und ein Bild zu überschreiben, das nicht existiert, oder wenn Sie nur versuchen, ein Bild zu löschen, das nicht vorhanden ist.

~ Tom

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top