So löschen Sie ein gelöschtes Thema über die Rails-Konsole wiederherstellen

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 ist schwierig, hier eine Zeitmaschine zu verwenden, aber destroy sollte wirklich nur für absolut dreifach bestätigte Fälle vorbehalten sein. Erstellen Sie zuerst ein Backup. Ich bin mir nicht sicher, ob Ihre Wiederherstellung dort kaskadiert und alle erforderlichen Datensätze zurückgibt.

Stattdessen:

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

Zur Wiederherstellung:

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