On Tuesday 19 May 2009, Michael .. wrote:

> Ich habe einen Blog Eintrag mit den Felder Title, Inhalt, usw.
> Zu jedem Blog Eintrag kann man mittles AJAX bis zu 5 Bilder hochladen
> die direkt nach dem Hochladen in einer Galerie angezeigt werden.
> Wenn der Benutzer dann auf Submit klickt, wird der Blog Eintrag
> gespeichert.
>
> Das Problem ist, dass der Blog Eintrag noch nicht existiert wenn die
> Bilder hochgeladen werden.
> Leider hab ich noch keine Optimale Lösung für das Problem gefunden.
[schnipp; zwei Varianten]

> Gibt es eine bessere Möglichkeit für das Problem, sodass z.b. bei
> Variante 1 keine unnötigen Einträge erzeugt werden. Wäre es sinnvoll
> das Ganze in einer Transaktion ausführen?

Das ist immer sinnvoll, hilft hier aber nur bedingt, weil du 
transaktionale Ressourcen, nämlich die Datenbank, mit nicht-
transaktionalen, dem Dateisystem, mischt.

Habe ich dich richtig verstanden, dass es grundsätzlich möglich ist, 
dass der Benutzer Bilder hochlädt, aber nie einen Blogeintrag dazu? Dann 
schlage ich vor Uploads (oder UploadBatches) und Blogeinträge logisch zu 
trennen. Der Ablauf sieht dann so aus:

- Der Benutzer öffnet das Blogformular.
- Er lädt mehrere Bilder auf den Server.
- Die Anwendung assoziiert mit jedem Bild ein Upload-Objekt in der 
Datenbank.
- Der Benutzer schreibt einen Blogeintrag und speichert ihn.
- Die Anwendung verknüpft den Blogeintrag mit den schon erzeugten 
Upload-Objekten.
- Periodisch löscht die Anwendung Upload-Objekte, die seit einer 
bestimmten Zeit herrenlos sind.

Das ist natürlich deutlich komplizierter als deine Vorschläge. 
Allerdings wirst du voraussichtlich um regelmäßige Hintergrundjobs 
ohnehin nicht herumkommen, da kannst du auch gleich damit anfangen.

Michael

-- 
Michael Schuerig
mailto:[email protected]
http://www.schuerig.de/michael/

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an