2010-12-28 10 views
2

Zum Beispiel, wenn ein anonymer Benutzer auf "Gefällt mir" -Button klickt, wird er auf eine Anmeldeseite umgeleitet; Der Benutzer kann sich entweder für die Anmeldung oder für die Anmeldung entscheiden. In beiden Fällen erinnert sich der Server an seine Aktion, sodass der Benutzer nicht erneut klicken muss. Die Daten sollten 10 Minuten nach ihrer Erstellung gelöscht werden.Wie speichere ich temporäre Daten für anonyme Benutzer in Rails

Wie implementiere ich das?

Antwort

3

Sie wollen im Grunde nur eine Liste von Dingen zu serialisieren, wenn sie ein Konto erstellen. Sie können dies in einer Sitzung speichern, in einem persistenten Cache wie Memcached (obwohl Sie nicht garantiert sind, dass es sich um Persistenz handelt) oder in einem benutzerdefinierten Modell/einer benutzerdefinierten Tabelle. Es gibt nicht wirklich eine einzige akzeptierte Möglichkeit, dies in Rails zu tun, also liegt es an Ihnen, wie Sie es implementieren.

Was Sie tun könnten, wenn Sie bei der Rails-Methode bleiben wollen, ist ein transient Flag auf einem Datensatz zu setzen, dann speichern Sie es. Sobald sich der Benutzer registriert hat, können Sie das Übergangsflag entfernen. Führen Sie einen Cron-Job aus, der alle temporären Datensätze löscht, die älter als 10 Minuten sind, und alle Ihre vor dem Destroy-Aufruf ausgeführten Callbacks sollten ausgeführt werden, damit Sie alle Statusänderungen rückgängig machen können, die sie verursacht haben. Das ist eine "schwere" Lösung, aber es ist einfach zu implementieren und ermöglicht es Ihnen, die Modelle von Rails einfach zu nutzen.

3

Ich würde sessions verwenden, um die temporären Daten zu speichern.

Verwandte Themen