4 Stimmen

Wie man Paperclip dazu bringt, Dateien zu löschen

Ich habe ein Modell, das Paperclip zur Verwaltung der Datei verwendet.

Nachdem ich das Modell gelöscht habe, möchte ich natürlich auch die Datei löschen, aber ich kann nicht herausfinden, wie ich die Datei mit Paperclip löschen kann.

Ich habe versucht self.sourcefile = nil if !sourcefile.dirty? im before_destroy def, aber das hatte keine Wirkung.

(Ich möchte in der Lage sein, es zu haben, löschen Sie die Datei lokal, wenn ich testen, und dann auf S3, wenn ich das verwenden - So brauche ich eine reine Büroklammer Lösung)

Irgendwelche Ideen?

10voto

Roadmaster Punkte 5288

Paperclip ist ziemlich laut, wenn es beim Löschen einer Datei versagt.

Wenn Sie ein Objekt ohne besondere Konfiguration löschen, werden auch die zugehörigen Dateien gelöscht, was im Protokoll vermerkt wird (zumindest im Entwicklungsmodus):

[paperclip] Deleting attachments.
[paperclip] deleting /clipper/public/system/avatars/3/original/whatever.JPG

Wenn Paperclip die Datei nicht löschen kann, löst es einfach eine Ausnahme aus.

All dies wurde mit dem neuesten Paperclip (geklont von github am 25. Mai) getestet. Wenn Sie eine ältere Version haben, sollten Sie diese aktualisieren und dann einige Tests durchführen, während Sie die Protokolle beobachten.

0voto

theIV Punkte 24844

Ich kann mich irren, aber ich glaube, es sollte automatisch geschehen, da has_attached_file fügt eine before_destroy Rückruf. Quelle .

Edit: Wenn es nicht funktioniert, können Sie vielleicht versuchen, Folgendes aufzurufen destroy_attached_files Sie selbst, was mir seltsam vorkommen würde. Quelle .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X