# Cancellazione logica

**URL:** <https://www.ruby-forum.com/t/cancellazione-logica/145057>\
**Category:** IT\
**Created:** [August 5, 2008, 5:33pm UTC](https://www.ruby-forum.com/t/cancellazione-logica/145057 "2008-08-05T17:33:28Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [August 5, 2008, 5:33pm UTC](https://www.ruby-forum.com/t/cancellazione-logica/145057/1 "2008-08-05T17:33:28Z")

</div>

Ciao a tutti,

vorrei implementare una sorta di cancellazione logica per una model (es  
Task); la mia idea teorica era quella di fare overwrite del metodo  
destroy in modo che setti a 1 l’attributo deleted e poi di conseguenza  
modificare i metodi tipo find in modo che cerchino solo tra i record con  
deleted = 0.  
Premesso che devo ancora partire, volevo solo sapere se cmq la strada è  
giusta e se ci sono suggerimenti oppure esempi da poter valutare.

se la model Task è cosi

class Task \< ActiveRecord::Base  
has\_many :notes  
belongs\_to :priority  
end

devo definire dentro un metodo self.destroy che fa circa come scritto  
sotto? ed allo stesso modo per tutti i metodi di ricerca che utilizzo su  
Task ?

class Task \< ActiveRecord::Base  
has\_many :notes  
belongs\_to :priority

```
def self.destroy
      deleted = 1
end

```

end

Grazie a tutti

Luigi

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [August 5, 2008, 5:46pm UTC](https://www.ruby-forum.com/t/cancellazione-logica/145057/2 "2008-08-05T17:46:57Z")

</div>

On Tue, Aug 5, 2008 at 5:36 PM, Luigi M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Ciao a tutti,
> 
> vorrei implementare una sorta di cancellazione logica per una model (es  
> Task); la mia idea teorica era quella di fare overwrite del metodo  
> destroy in modo che setti a 1 l’attributo deleted e poi di conseguenza  
> modificare i metodi tipo find in modo che cerchino solo tra i record con  
> deleted = 0.  
> […]

hai un motivo particolare per voler modificare destroy piuttosto che  
definire, che so, logical\_destroy?

se la risposta è sì, prova magari a dare un’occhiata ad  
acts\_as\_paranoid, un plugin che ti salva tutti i record che vengono  
cancellati.

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [August 6, 2008, 9:16am UTC](https://www.ruby-forum.com/t/cancellazione-logica/145057/3 "2008-08-06T09:16:40Z")

</div>

No, in effetti potrei definire anche un altro metodo, in questo caso poi  
non volevo adottare la cancellazione logica ovunque, ma solo per tenere  
i record di una tabella,  
cmq guardo anche il plugin che mi hai detto .

Grazie.

Luigi

Pietro G. ha scritto:
