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?

タイムマシンを適用するのは難しいですが、destroy は絶対的に確定したケースでのみ使用するべきです。まずはバックアップを取ってください。あなたの環境での復元が連鎖的に必要なすべてのレコードを戻してくれるかどうかは確信が持てません。

代わりに以下のようにしてください:

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

復元するには:

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