Estou procurando uma maneira de excluir sussurros acima de uma certa idade de todos os tópicos.
Geralmente usamos sussurros para discutir ações potenciais de moderadores, mas, uma vez que a ação foi tomada, os sussurros não são tão úteis e, com o passar do tempo, tornam-se cada vez mais ruído.
Eu poderia excluir posts acima de uma certa idade com post_type=4 (sussurro), mas isso parece poder deixar coisas pendentes ou inconsistentes no banco de dados, ou não ser permitido devido às chaves do fórum.
Essa seria a maneira mais limpa de excluir os 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
Isso funcionará essencialmente como se o usuário Sistema tivesse excluído cada post manualmente usando o botão de excluir no post. Incluí skip_staff_log para que você não polua seus logs de equipe, mas pode removê-lo se preferir que a ação seja registrada.
Então, essa tarefa funciona bem, obrigado… mas os sussurros simplesmente ficam colapsados e ainda são visíveis por administradores e moderadores quando expandidos.