Busco una forma de eliminar susurros de más de cierta antigüedad de todos los temas.
Generalmente usamos susurros para discutir posibles acciones de moderación, pero una vez que se ha tomado la acción, los susurros no son tan útiles y con el tiempo se convierten cada vez más en ruido.
Podría eliminar publicaciones de más de cierta antigüedad con post_type=4 (susurro), pero esto podría dejar cosas colgando o inconsistentes en la base de datos, o no estar permitido debido a las claves del foro.
Esta sería la forma más limpia de eliminar los posts:
whispers = Post.where(post_type: 4).where("created_at < ?", 1.year.ago)
whispers.find_each do |w|
PostDestroyer.new(Discourse.system_user, w, skip_staff_log: true).destroy
putc "."
end
Esto funcionará esencialmente como si el usuario Sistema hubiera eliminado cada post manualmente usando el botón de eliminar en el post. He incluido skip_staff_log para que no satures tus registros de personal, pero puedes quitarlo si prefieres que la acción quede registrada.
Así que esta tarea funciona bien, gracias… pero los susurros simplemente se colapsan y siguen siendo visibles para los administradores y moderadores cuando se expanden.