2009-08-06 3 views

Répondre

2

Vous n'avez pas besoin de rediriger vers la page de suppression pour supprimer un élément. Un filtre avant pourrait fonctionner.

# application_controller.rb 
def destroy_when_cookie_is_nil 
    some_record.destroy if cookies[:time].nil? 
end 

# some controller 
before_filter :destroy_when_cookie_is_nil 

Cependant suppression d'un enregistrement basé sur un cookie arrivant à expiration ne semble pas être une bonne solution pour moi. Si vous souhaitez supprimer un enregistrement après 5 jours, je vous recommande fortement de ne pas utiliser de cookies, mais d'ajouter une colonne datetime expires_at à votre modèle. Vous pouvez définir cette colonne automatiquement via un rappel.

# in model 
before_create :set_expiration 
def set_expiration 
    self.expires_at = 5.days.from_now 
end 

Vous pouvez ensuite ajouter une étendue nommée à votre modèle pour extraire les enregistrements non expirés.

# in model 
named_scope :active, lambda { {:conditions => ["expires_at IS NULL OR expires_at >=", Time.zone.now]} } 

Ensuite, vous pouvez appeler Item.active pour afficher uniquement les enregistrements non expirés. Si vous voulez vous assurer qu'ils sont supprimés de la base de données, configurez une tâche cron pour trouver tous les enregistrements expirés et supprimez-les.

Questions connexes