2011-01-10 11 views
1

Der Rails Plug-in Paperclip interpoliert den Anhangspfad basierend auf einigen dynamischen benutzerdefinierten Regeln jedes Mal, wenn der Pfad angefordert wird. Damit können Sie Namen/IDs/etc. in die Pfade deiner Anhänge.Wie kann ich den Pfadpfad für Paperclip unveränderlich machen?

Ich habe jedoch zwei Fälle, in denen sich die ursprünglichen Pfadabhängigkeiten ändern können, und wenn sie dies tun, kann ich den Anhang nicht mehr finden, weil der interpolierte Pfad jetzt auf die falsche Stelle zeigt.

Ich brauche den Pfad nur einmal zu interpolieren, wenn die Datei gespeichert wird, dann wird dieser Pfad beibehalten und zurückgegeben, unabhängig von den sich ändernden Interpolationsabhängigkeiten.

Antwort

0

ein Kollege von mir kam mit einer guten Lösung. Es ist nicht nahtlos in Büroklammer integriert, aber es ist effektiv. Der Kern ist:

  1. a „before_create“ Filter auf dem Modell eine Momentaufnahme aller Werte in dem Pfad verwendet aufzunehmen verwenden, die

  2. Referenzierung diese Snapshot von ihr erstellten Werten aus der Büroklammer Bahninterpolation verändern könnte (in Bezug auf die tatsächliche Quelle gegenüber, könnte die) ändert

so Ihr Weg Definition etwas wie folgt aussieht:

:path => '.../:snapshotted_name/...' 

und der Code sieht in etwa wie folgt aus: in die Zukunft, sondern die Pfade zu den Dateien

before_create :snapshot_names # only set once 

private 

def snapshot_names 
    snapshotted_name = customer.name 
end 
-1

Ich habe das Problem gefunden.

Ich habe zwei Fälle, in denen die ursprünglichen Pfadabhängigkeiten ändern können

Warum werden sie ändern? Was sind diese zwei Fälle? Was hindert Sie daran, einen Plan zu entwickeln, nach dem sie sich niemals ändern werden?

+0

ein Beispiel ist so etwas wie „/ customer_name/product_name /“, wo entweder der Kunde oder der Produktname ändern kann, wird nicht Daher wird die Interpolation der Pfade unterbrochen, wenn sich diese Namen ändern. –

+0

Dann interpolieren mit IDs oder etwas anderes. Mit anderen Worten, entwerfe ein Schema, durch das sich die Wege niemals ändern werden. Finde heraus, was sich nicht ändert, und begründe die Pfade darauf. – yfeldblum

Verwandte Themen