Ruby Forum Italian Ruby user group > cancellazione logica

Posted by Luigi Maroncelli (Guest)
on 05.08.2008 17:33
(Received via mailing list)
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
Posted by Pietro Giorgianni (giorgian)
on 05.08.2008 17:46
(Received via mailing list)
On Tue, Aug 5, 2008 at 5:36 PM, Luigi Maroncelli <luigi.m@condor.it> 
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.
Posted by Luigi Maroncelli (Guest)
on 06.08.2008 09:16
(Received via mailing list)
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 Giorgianni ha scritto: