Después de eliminar varios miles de publicaciones con fotos, las cargas en la sección de administración siguen siendo las mismas. Esta configuración se estableció en 1. ¿Hay alguna forma de purgar todas las cargas asociadas con las publicaciones eliminadas más rápido?
Período de gracia de días para purgar cargas eliminadas
Período de gracia (en días) antes de que se elimine una carga eliminada.
Hice esto, lo que vi en otra publicación, pero después de reconstruir, no se eliminó nada.
No estoy seguro de entender esto. No he subido nada, solo he eliminado publicaciones y categorías en un sitio de prueba. No hay usuarios en este momento y han pasado unas 3 horas. De 13.7 a ahora se muestra esto. Las cargas huérfanas configuradas para eliminarse en una hora y no ha sucedido.
Veo este hilo que discute mucho, ¿pero nada sucedió?
Luego este de aquí.
Y he intentado todo lo mencionado en rails, sidekiq y con comandos en ese hilo y todavía nada se elimina. Deberían ser cientos, si no miles de imágenes eliminadas, ya que los usuarios publicaron fotos con cada hilo.
Creo que la tabla post_uploads ya no existe. Ahora es uploads y upload_references. Es posible que necesites actualizar ese fragmento antiguo para tenerlo en cuenta si estás intentando ese método.
¿Cómo has eliminado esas publicaciones? ¿Solo borrado suavemente en la interfaz de usuario? Creo que la configuración que limpia las imágenes huérfanas (clean orphan uploads grace period hours) no tiene en cuenta si están borradas suavemente, y solo le importa si la imagen todavía está en la última versión de la publicación:
Creo que puedes seleccionar todas las publicaciones en la consola de Rails y usar PostDestroyer en ellas para eliminarlas permanentemente, y luego las cargas se limpiarán la próxima vez que se ejecute Jobs::CleanUpUploads (o se active manualmente).
Si es una categoría completa, por ejemplo, creo que puedes usar algo como esto:
category = Category.where(id: CATEGORY_ID).pluck(:id)
topic = Topic.where(category_id: category).pluck(:id)
topic.each do |t|
Post.where(topic_id: t).find_each do |p|
PostDestroyer.new(Discourse.system_user, p).destroy
p.destroy!
end
end
Y añadiré la advertencia habitual sobre hacer una copia de seguridad antes de realizar cambios en la consola de Rails, por si acaso. Alerta de cuchillo afilado.
(Solo como información, pero Jobs::DirectoryRefreshDaily y Jobs::DirectoryRefreshOlder son los que pueblan el Directorio de Usuarios, por lo que no son relevantes aquí)