Ich bin auf der Suche nach einigen Ideen zum Speichern eines Snapshots einiger (unterschiedlicher) Datensätze zum Zeitpunkt eines Ereignisses, zum Beispiel Benutzer ein Dokument aus meiner Anwendung, so dass dieses Dokument kann später regeneriert werden. Welche Strategien empfehlen Sie? Sollte ich die gleiche Tabelle wie die Tabelle mit aktuellen Werten verwenden oder eine historische Tabelle verwenden? Kennst du irgendwelche Plugins, die mir bei der Aufgabe helfen könnten? Bitte teile deine Gedanken und Lösungen.Techniken zum Speichern/Abrufen von historischen Daten in Rails
Antwort
Ich habe das einmal eine Weile zurück. Wir haben eine neue Tabelle, die eine sehr ähnliche Struktur auf dem Tisch hatten wir anmelden wollten, und wenn wir etwas einzuloggen benötigt, haben wir etwas Ähnliches wie folgt aus:
attr = object_to_log.attributes
# Remove things like created_at, updated_at, other unneeded columns
log = MyLogger.new(attrs)
log.save
Es gibt eine sehr gute Chance, es Plugins/Edelsteine so etwas zu tun.
Ich habe acts_as_versioned
für solche Sachen verwendet.
Dafür gibt es mehrere Plugins.
Acts_audited
agiert als überwacht Erstellt eine einzelne Tabelle für alle auditierbaren Objekte und erfordert keine Änderungen an Ihren vorhandenen Tabellen. Sie erhalten den Eintrag pro Änderung mit den Änderungen, die als Hash in einem Memofeld gespeichert sind, die Art der Änderung (CRUD). Es ist sehr einfach, nur mit einer einzigen Anweisung im Application Controller zu konfigurieren, welche Modelle überwacht werden sollen. Rollback ist an Ihnen, aber die Informationen sind da. Da die gespeicherten Informationen nur die Änderungen sind, die das gesamte Objekt aufbauen, kann es aufgrund nachfolgender Änderungen schwierig sein.
Acts_as_versioned
ein bisschen komplizierter Sie benötigen eine separate Tabelle Setup- für jedes Objekt, das Sie auf die Version wollen und Sie haben eine Version-ID, um Ihre bestehenden Tabelle hinzuzufügen. Rollback ist sehr einfach. Es gibt Gabeln auf Github, die einen Hash der Änderungen seit der letzten Version bieten, so dass Sie die Unterschiede leicht hervorheben können (es ist was ich verwende). Meine Vermutung ist, dass dies die beliebteste Lösung ist.
Ich habe keine Erfahrung mit: acts_as_revisable. Ich werde wahrscheinlich das nächste Mal ausprobieren, wenn ich die Versionierung brauche, da sie viel ausgeklügelter aussieht.
Das OP ist ein Jahr alt, aber ich dachte, ich würde vestal_versions zu der Mischung hinzufügen. Es verwendet eine einzige Tabelle, um serialisierte Hashes jeder Version zu verfolgen. Durch das Verfolgen der Änderungsaufzeichnung können die Modelle auf einen beliebigen Zeitpunkt zurückgesetzt werden.
Scheint, der Gemeinschaftsfavorit von diesem Pfosten zu sein ...
- 1. Techniken zum Reduzieren von Datenbankabfragen in einer Rails-App
- 2. Techniken zum Glätten von Flächenkanten in OpenGL
- 3. Rails: Skript zum Importieren von Daten
- 4. Beliebige Techniken zum Zeichnen von Pfad animiert?
- 5. Techniken zum Schätzen von Kurven Ähnlichkeit
- 6. Techniken zum Entfernen alter Daten auf Oracle-Datenbanken
- 7. Beliebte Techniken zum Debuggen .htaccess
- 8. Best Practices mit historischen Daten in MySQL-Datenbank
- 9. Erhalten von historischen Daten aus Google Maps Verkehr
- 10. Erhalten von historischen Werten von SQL
- 11. Techniken zum Profilieren von Speicher in Safari Desktop und iOS?
- 12. Techniken zum Sperren von Domänen in Internet Explorer
- 13. Fehler mit historischen Schalttagen
- 14. Spark Streaming historischen Zustand
- 15. ETL-Framework zum Laden von Daten in Rails App
- 16. Vorschläge zum Speichern von Daten
- 17. Werkzeuge und Techniken zum Refactoring CSS
- 18. Techniken zum Nachweis von polymorphen und metamorphen Viren?
- 19. Techniken zum Hinzufügen von Errungenschaften zu Business-Class-Software
- 20. Techniken zum Erstellen von PDF-Bericht aus Vorlagen mit iTextSharp
- 21. Performante Techniken zum Finden ähnlicher Werte in SQL?
- 22. Can Rails Migrationen werden zum Konvertieren von Daten verwendet?
- 23. Rails Probleme beim Senden von AJAX-Daten zum Controller
- 24. Linq Filter Reihe Unterschiede in historischen
- 25. Ressourcen von Techniken zur Kollisionserkennung in 2D?
- 26. Oracle Debugging-Techniken
- 27. Multiprocessing Debug-Techniken
- 28. Aktivieren von local-infile zum Laden von Daten in remote mysql von Rails
- 29. Cross-Browser-Techniken zum Deaktivieren der Passwort-Caching
- 30. Erstellen von Variablen aus dem historischen Fenster in R
Ihr Link funktioniert nicht richtig. Es fordert mich stattdessen auf diesen Link zu gehen: http://github.com/technoweenie/acts_as_versioned/tree/master – MattC
Wie seltsam - das ist die genaue URL in der Verknüpfung. Wenn Sie in der Adressleiste auf der 404-Seite erneut auf "Return" klicken, wird es an der richtigen Stelle angezeigt. Github macht heute eine Veröffentlichung, also vermute ich, dass sich die Dinge beruhigen werden. –