2011-09-14 5 views
18

Recentemente ho avuto un problema con uno dei miei scenari di cetriolo. Alcune voci nel mio database di test sparivano mentre la funzione era in esecuzione. Ho risolto il problema cambiando la rigaTransaction vs Truncation Database Cleaner

DatabaseCleaner.strategy = :transaction 

a

DatabaseCleaner.strategy = :truncation 

Io non sono sicuro perché questo ha aiutato. C'è una tabella sulla pagina web gem di pulitori di database, ma non dice veramente cosa significano i due termini. Qualsiasi aiuto nel capire la differenza tra i due concetti sarebbe grandioso.

risposta

35

Inserirlo in un modo molto semplice: il troncamento rimuove tutti i dati dal database e i rollback delle transazioni tutte le modifiche apportate dallo scenario in esecuzione.

+1

questo è praticamente ciò di cui avevo bisogno. Grazie – elliance

1

Il troncamento rimuove i dati che escono dalla struttura del database, la transazione rallenta notevolmente l'operazione del database ed è la strategia più veloce. E c'è l'ultimo che è la cancellazione. La cancellazione cancella i dati e rimuove la struttura del database, è la più lenta ma più sicura. Puoi anche controllare Difference between truncation, transaction and deletion database strategies