Невозможно удалить тему, созданную системой

Я пытаюсь удалить некоторые категории в пользу использования тегов, но в результате у меня остаётся одна созданная системой тема, которую я не могу удалить (на скриншоте это «Technical», обратите внимание на «-1 ответ»). Если я пытаюсь открыть эту тему, страница зависает, и мне приходится закрывать вкладку и начинать заново. Есть идеи, как её удалить, возможно, через Rails?

Попробуйте выполнить:

cd /var/discourse
./launcher enter app
rails c
Topic.find(id).destroy

id можно найти, наведя курсор мыши на заголовок темы.

Спасибо, Даниэла, это помогло удалить тему, но теперь, когда я пытаюсь удалить категорию, система всё ещё считает, что в ней есть одна тема, и не позволяет удалить категорию. Есть ли аналогичная функция для удаления категории?

Сделайте полную резервную копию вашего сайта, а затем выполните:

cd /var/discourse
./launcher enter app
rails c
rake destroy:topics["Gear","Discussions"]

где Gear — это ваша подкатегория, а Discussions — родительская категория.

Этого должно быть достаточно, чтобы удалить все темы в этой подкатегории. После этого вы сможете удалить саму подкатегорию.

К сожалению, вот результат…

NameError: undefined local variable or method `topics' for main:Object
from (pry):1:in `__pry__'
[2] pry(main)>

Моя ошибка, попробуйте только

cd /var/discourse
./launcher enter app
rake destroy:topics["Gear","Discussions"]

«В категории discussions/gear нет тем для удаления», но я всё равно не могу удалить категорию: «Невозможно удалить эту категорию, так как количество тем равно 1».

Вы можете проверить свои логи, чтобы узнать, есть ли там конкретные ошибки?

Нет, я не вижу ничего в логах, связанного с этим…

Попробуйте обновить счетчики категорий и посмотрите, поможет ли это.

cd /var/discourse
./launcher enter app
rails c
Category.ensure_consistency!

А затем попробуйте снова удалить категорию.

К сожалению, это вернуло nil

Мне удалось сбросить количество тем с помощью

Category.find_by(name: 'Gear').update(topic_count: 0)

А затем я смог удалить категорию. Спасибо, Дэвид!

У меня это тоже вернуло nil.

Это вернуло «true», но не изменило значения -1 в столбце reply моих тем. Также я всё ещё не мог удалить категорию.

После того как я потратил на это больше времени, мне наконец удалось заставить это работать! Спасибо!