From d2ae406023af3d54c0201ff73db31af79fd363ab Mon Sep 17 00:00:00 2001 From: f Date: Fri, 7 May 2021 18:06:49 -0300 Subject: [PATCH] =?UTF-8?q?eliminar=20del=20=C3=ADndice=20al=20eliminar=20?= =?UTF-8?q?el=20art=C3=ADculo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/post.rb | 15 ++++++++++++--- app/models/post/indexable.rb | 5 +++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index 7964d4e..a64bd55 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -17,6 +17,9 @@ class Post attr_reader :attributes, :errors, :layout, :site, :document + # TODO: Modificar el historial de Git con callbacks en lugar de + # services. De esta forma podríamos agregar soporte para distintos + # backends. include ActiveRecord::Callbacks include Post::Indexable @@ -258,11 +261,17 @@ class Post end # Eliminar el artículo del repositorio y de la lista de artículos del - # sitio + # sitio. + # + # TODO: Si el callback falla deberíamos recuperar el archivo. + # + # @return [Post] def destroy - FileUtils.rm_f path.absolute + run_callbacks :destroy do + FileUtils.rm_f path.absolute - site.delete_post self + site.delete_post self + end end alias destroy! destroy diff --git a/app/models/post/indexable.rb b/app/models/post/indexable.rb index 8a12e40..0baa801 100644 --- a/app/models/post/indexable.rb +++ b/app/models/post/indexable.rb @@ -8,6 +8,7 @@ class Post included do # Indexa o reindexa el Post after_save :index! + after_destroy :remove_from_index! # Devuelve una versión indexable del Post # @@ -35,6 +36,10 @@ class Post to_index.save end + def remove_from_index! + to_index.destroy.destroyed? + end + # Los metadatos que se almacenan como objetos JSON. Empezamos con # las categorías porque se usan para filtrar en el listado de # artículos.