2010-11-29 3 views
0

Ich möchte meinem Benutzer die Möglichkeit geben, bereits hochgeladene Fotos auf verschiedenen Seiten und in verschiedenen Ausrichtungen zu verwenden, sodass ich jeweils mehrere Datensätze erstellen muss Fotos in der Datenbank. Ich möchte jedoch, dass, wenn Benutzer eine Instanz löschen, das Foto bleibt, bis alle Instanzen gelöscht sind, dann löschen Sie die Datei.So verwenden Sie Fotos mehrmals in Büroklammer und löschen nur, wenn alle Instanzen gelöscht werden

Was ist der beste Weg, dies in Paperclip zu tun?

+0

Bitte seien Sie klar. – Shreyas

Antwort

1

Wenn Sie möchten, dass ein Foto auf mehreren Seiten, aber nicht auf unterschiedliche Weise verwendet wird, dh keine unterschiedlichen Stilkonfigurationen in Büroklammer, dann sollten Sie nur einen Datensatz für jedes Foto haben und ihn mit einem anderen Datensatz verknüpfen: durch Assoziation. Auf diese Weise können Sie das mittlere Modell den Foto-Datensatz bei der Zerstörung aufrufen lassen, um zu sehen, ob noch andere Assoziationen für das Foto übrig sind.

Es ist jedoch sehr schwierig, spezifisch zu sein, ohne zumindest die aktuelle Modellstruktur und Assoziationen zu sehen und ein Beispiel dafür, was Ihre Benutzer tun dürfen.

In jedem Fall würde ich nicht empfehlen, zwei separate Büroklammer Datensätze zeigen genau auf die gleiche Datei im Dateisystem.

Edit:

Wenn es der tatsächliche Upload ist man dann vermeiden wollen können Sie immer die Original-Datei verwenden, wenn Sie den neuen Datensatz zu erstellen:

@first_photo = Photo.find(1) 

@new_photo = Photo.new 
@new_photo.attachment = @first_photo.attachment 
@new_photo.save 

Das Foto würde noch einmal für jeden gespeichert werden Instanz, aber der Upload wird vermieden.

+0

Ich möchte den zweiten Fall. Zu meinem Fotomodell gehören x, y, Breite, Höhe des Fotos sowie die Seiten-ID, in der sich das Foto befindet. Also wollte ich die Foto-Mehrfachzeit nicht auf verschiedene Datensätze mit unterschiedlichen x, y, width, height hochladen. – Tam

Verwandte Themen