6

Beh, ho visto alcuni plugin per creare una tabella di versioni per tenere traccia delle modifiche su modelli specifici, ma non posso fare facilmente come quorum mostraCome funziona il controllo delle revisioni su quora? Progettazione di database

Changing a topic photo on quora

Quello che ho finora è una tabella così:

  • id
  • item_type: especifies cosa revisione modello si riferisce: "Tema"
  • item_id
  • evento: se è stato: "modificato, aggiunto, Convertito, rimosso"
  • che: chi ha attivato l'evento
  • colonna: Cosa colonna "Tema" il valore è cambiato. "Argomento PHOTO_URL."
  • nuova: nuovo valore: "http://s3.amazonaws.../pic.png"
  • vecchio vecchio valore: "" http://s3.amazonaws.../oldpic.png "
  • revision_rel: punti al passato di revisione
  • timestamp

enter image description here

Qualcuno potrebbe darmi aiuto e linee guida con questo design? Im preoccupato per le prestazioni, le colonne sbagliate, le colonne mancanti, ecc

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

Probabilmente non hanno bisogno di più questo ... ma potresti non aver bisogno di memorizzare il vecchio e il nuovo valore se registri tutti gli eventi (crea, modifica, distruggi). Il vecchio valore della versione 2 è il nuovo valore della versione 1. Dipende dal tuo caso. –

risposta

1

Ci sono alcune gemme disponibili che già fanno quello che stai cercando. Hai guardato in:

Prendere un aspetto a gemme esistenti: https://www.ruby-toolbox.com/categories/Active_Record_Versioning

Sto usando sottoposta a revisione (in precedenza acts_as_audited) per qualcosa di molto simile: https://github.com/collectiveidea/audited

+0

Modificherò la mia domanda più tardi per dire che questo plugin non fa quello che mi serve. Voglio il controllo delle versioni per colonna e non l'intera riga. Descriverò meglio questo dopo e come lo sto implementando. Ma grazie per la risposta. – Luccas