Domanda

Qualcuno sa di una gemma che entrambi i record di eliminazione soft da un database (li segna solo come eliminati rispetto a quelli che sono effettivamente eliminati) e ...

... anche quando qualsiasi tipo di ricerca omette automaticamente quei record spazzati senza utilizzare ambiti speciali definiti dall'utente. Ad esempio, tutto si svolge nella gemma.

Saluti!

È stato utile?

Soluzione

Potresti voler controllare Paper_Trail

https://github.com/airblade/paper_trail

Altri suggerimenti

DHH è un fan di farlo con "preoccupazioni" che sono fondamentalmente solo mixin di moduli e mi piace quell'approccio minimalista.

Ecco la versione di Dhh - https://gist.github.com/1014971

Ecco la mia versione di Bugfixed - https://gist.github.com/4032984

Paper_Trail ha molte funzionalità ed è ben testato (da molto tempo).

Se vuoi solo la funzionalità specificata, dai un'occhiata:

https://github.com/grosser/soft_deletion

Paranoia

Il Paranoia gemma dal talentuoso apertamente Radar è quello che cercheresti.

È essenzialmente una riscrittura di Acts_AS_Paranoid (e usa molte delle stesse convenzioni) ma è più piccolo, più veloce e compatibile con le rotaie 3 e 4.

Realizza entrambe le tue richieste:

  1. Imposta automaticamente a deleted_at timestamp quando a destroy Il metodo è chiamato su un oggetto la cui classe include acts_as_paranoid.

  2. Imposta automaticamente una condizione su qualsiasi domanda che garantisce deleted_at IS NULL, a meno che tu non includa with_deleted Nella tua catena di query.

Non potevo dire abbastanza cose buone sulla biblioteca o il radar.

Bonus: la sua documentazione potrebbe essere la migliore nel "business".

Uso scarto gemma. È un modo abbastanza semplice per i record di cancellazione soft.https://www.rubydoc.info/gems/discard/1.0.0

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