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.
Acredita que isso atenderá às suas necessidades?