If I want to completely delete a post, I should just hide them?

Não tenho certeza se é o ideal, mas usei este código para substituir o conteúdo das postagens do usuário em tópicos excluídos por "[deleted]"". Dessa forma, a existência das postagens foi preservada, e pareceu mais seguro do que destruí-las completamente.

# backup realizado primeiro
deleted_topic_id = 1234
user_id = 5678

t = Topic.unscoped.find(deleted_topic_id)
ps = t.posts.select { |p| p.user_id == user_id }

# `ps.count` para verificar

ps.each do |p|
  p.raw = '[deleted]'
  p.save
end