Un jour, une gem

07/04/2012

Samedi c'est PermanentRecords

gem install permanent_records

On efface pour de faux

Aujourd’hui une petite gem permettant de faire du soft-delete, ce qui peut être bien pratique.

Du soft-delete ? On efface pas réellement les données de la BDD, on leur ajoute un attribut deleted_at qui sera renseigné quand l’entité sera “détruite” :)

Un petit exemple issu de la documentation :

# on assigne à  'deleted_at' le Time.now
User.find(3).destroy
 # on détruit tout pour de vrai
User.find(3).destroy(:force)
# on efface tout pour de faux !
User.destroy_all
# on envoie Terminator dans nos utilisateurs              
User.delete_all               

En cadeau deux scopes de recherche :

# on récupère les utilisateurs effacés 
User.deleted.find(...)        
# on récupère les utilisateurs qui ne sont pas effacés
User.not_deleted.find(...)    

Voilà de quoi jouer pour ce samedi ^^

Le lien utile