6

Nun, ich habe einige Plugins gesehen einen Versionen Tabelle zu erstellen, den Überblick über Änderungen bei bestimmten Modellen zu halten, aber kann nicht einfach tun, wie Quoren zeigtWie funktioniert die Revisionskontrolle auf Quora? Datenbank-Design

Changing a topic photo on quora

Was ich habe, so weit ist ein Tisch wie folgt aus:

  • id
  • item_type: especifies welche Modellüberarbeitung bezieht: "Thema"
  • ITEM_ID
  • Ereignis: wenn es: "bearbeitet, hinzugefügt, rückgängig gemacht, entfernt"
  • die: wer das Ereignis ausgelöst hat
  • Spalte: Welche Spalte in "Thema" Der Wert hat sich geändert. "Thema PHOTO_URL."
  • neuer: Neuer Wert: "http://s3.amazonaws.../pic.png"
  • alt alter Wert: "" http://s3.amazonaws.../oldpic.png "
  • revision_rel: verweist auf die Vergangenheit Revision
  • Zeitstempel

enter image description here

Jemand könnte mir Hilfe und Richtlinien mit diesem Design geben? Im besorgt über die Leistung, falsche Spalten, fehlende Spalten, etc

id | item_type | item_id | event | who | column | new  | old  | revision_rel | date 
________________________________________________________________________________________________________ 
1 | Topic | 2 | edit | Luccas | photo | pic.png | oldpic.png | null  | m:d:y 
2 | Topic | 2 | revert | Chris | photo | oldpic.png | pic.png |  1  | m:d:y 
+0

Sie das wahrscheinlich nicht mehr brauchen ... Sie müssen jedoch möglicherweise den alten und den neuen Wert nicht speichern, wenn Sie alle Ereignisse aufzeichnen (Erstellen, Bearbeiten, Löschen). Der alte Wert von Version 2 ist der neue Wert von Version 1. Hängt von Ihrem Anwendungsfall ab. –

Antwort

1

Es gibt einige Edelsteine ​​zur Verfügung, die bereits tun, was Sie sich wünschen. Haben Sie sich in:

ein Aussehen an bestehenden Edelsteine ​​nehmen: https://www.ruby-toolbox.com/categories/Active_Record_Versioning

Ich bin mit geprüften (vorher acts_as_audited) für etwas sehr ähnlich: https://github.com/collectiveidea/audited

+0

Ich werde meine Frage später bearbeiten, um zu sagen, dass diese Plugins nicht tun, was ich brauche. Ich möchte die Versionierung nach Spalten und nicht die gesamte Zeile. Ich werde das später besser beschreiben und wie ich es implementiere. Aber danke für die Antwort. – Luccas