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.