Cómo recuperar un tema eliminado usando la consola de Rails

This is how the accidental deletion occurred:

cd /var/discourse
./launcher enter app
rails c
Topic.where(:id=><id>).destroy_all

The <id> I deleted was the wrong one and of course it just so happened to be a topic that a number of users were tuned into it. The important thing is I stopped, did not panic and did not execute another action after the accidental deletion occurred.

:stop_sign: Stop, :no_entry_sign: Do Not Panic and :no_entry_sign: Do Not Execute

How I recovered the accidentally deleted topic using the rails console:

destroyed_topic = _  
destroyed_topic.each do |destroyed_record|
  Topic.create(destroyed_record.attributes)
end

For future reference are there other ways could I have achieved this? If so, how?

Es difícil ponerle un límite de tiempo a esto, pero destroy realmente debería reservarse solo para casos absolutamente confirmados al triple nivel. Haz una copia de seguridad primero. No estoy seguro de si tu recuperación allí se propagará y devolverá todos los registros que necesitas.

En su lugar:

Topic.find_by(id: <id>).trash!

Para recuperar:

Topic.with_deleted.where(id: <id>).recover!