2011-09-14 11 views
18

Recientemente tuve un problema con uno de mis escenarios de pepino. Ciertas entradas en mi base de datos de prueba desaparecían mientras se ejecutaba la característica. He resuelto el problema cambiando la líneaTransaction vs Truncation Database Cleaner

DatabaseCleaner.strategy = :transaction 

a

DatabaseCleaner.strategy = :truncation 

No estoy seguro de por qué eso ayudó. Hay una tabla en la página web de gemas de limpieza de bases de datos, pero realmente no dice lo que significan los dos términos. Cualquier ayuda para entender la diferencia entre los dos conceptos sería genial.

Respuesta

35

Poniéndolo de una manera muy simple: el truncamiento elimina todos los datos de la base de datos y las reversiones de transacciones todos los cambios que se han realizado en el escenario en ejecución.

+1

eso es más o menos lo que necesitaba. Gracias – elliance

1

El truncamiento elimina los datos dejando la estructura de la base de datos, la transacción revierte principalmente la operación de la base de datos y es la estrategia más rápida. Y está el último que es eliminación. La eliminación borra los datos y elimina la estructura de la base de datos, es la más lenta pero más segura. También puede marcar Difference between truncation, transaction and deletion database strategies