Ruby on Rails: come tenere traccia delle modifiche come StackOverflow implementa la sua storia di revisione?

StackOverflow https://stackoverflow.com/questions/3833187

Domanda

Se dovessi realizzare un sistema identico alla storia domanda di revisione StackOverflow utilizzando Ruby on Rails , che cosa devo fare per realizzare questo? Sto creando un sito che si comporta come un wiki in cui i contenuti forniti dagli utenti possono essere aggiornati da altre persone. Ho bisogno di essere in grado di tracciare la storia di questi cambiamenti, ma non sono a conoscenza di come implementare questa.

Soluzione:

In poche parole, il modo in cui funziona è quello di creare un tavolo extra per tenere traccia delle modifiche. Ogni riga della tabella ha una "istantanea" dei dati come esisteva prima che il record è stato modificato (o solo i dati che ha cambiato).

Ci sono un certo numero di Ruby gemme che hanno già fatto la maggior parte del lavoro. Ecco un elenco di gemme che fare con il controllo delle versioni / revisione storia . Sembra Paper Trail è attualmente la gemma più importante per fare questo. Ryan Bates ha registrato un Railscast fornendo un panoramica sull'uso di Paper Trail .

È stato utile?

Soluzione

Quando una voce viene modificata, non si elimina il (vecchio) voce, è sufficiente aggiungere una nuova voce con un nuovo numero di versione. Quando si desidera recuperare una voce per la visualizzazione, si sceglie quello con il più alto numero di versione. Quando si vuole recuperare una voce per mostrare la sua storia di revisione, si sceglie tutti e ordinare loro dal numero di versione.

Altri suggerimenti

So che questo è vecchio, ma chi si imbatte in questo si dovrebbe checkout Paper Trail

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top