Как удалить ВСЁ из форума и оставить только пользователей?

Это самый быстрый и простой способ, и с большим отрывом.
Скачайте список пользователей, как предложил @JammyDodger, по адресу /admin/users/list/active, сохраните файл CSV, очистите его, оставив только адреса электронной почты, и выполните массовое приглашение через интерфейс администратора из новой установки Discourse. Пользователям придётся снова создать учётные записи.

Если вы хотите удалить все данные, кроме данных некоторых пользователей, простого способа сделать это нет, и я могу предположить, что попытка может легко привести к поломке форума.

Если вы хотите экспортировать большую часть данных пользователей (их собственные настройки и прочее), это также будет сложно и потребует написания скрипта на Ruby on Rails. Кроме того, вы можете столкнуться с проблемами, о которых я не подумал. Если вы не уверены, как это сделать, рекомендую придерживаться первого решения или написать в канал Marketplace, если у вас есть бюджет.

Это правда. Но если вы хотите рискнуть, можете попробовать следующее:

./launcher enter app
discourse backup
rails c
Topic.where("user_id > 1").destroy_all
Upload.where("user_id > 1").destroy_all
exit
exit

Я думаю, что удаление тем должно удалять сообщения, но вы также можете добавить:

 Post.where("user_id > 0").destroy_all

Условие > 1 оставит темы, созданные первым пользователем. Если вы хотите удалить их тоже, измените на > 0, что оставит темы, созданные @system. Думаю, вы очень пожалеете, если удалите их.

Это создаст резервную копию на случай, если всё будет уничтожено.

Это почти наверняка плохая идея, но это то, что вы просили.

Действительно! Для этого есть класс PostDestroyer, который выполняет много необходимой дополнительной очистки.

@xebiyen вы можете использовать эту rake-задачу, чтобы удалить все темы во всех категориях, но оставить категории и пользователей нетронутыми:

$ ./bin/rake destroy:topics_all_categories

Круто, я не знал об этой rake-задаче. Удалит ли она темы “About”, что стало бы нежелательным побочным эффектом?

Нет, метод по умолчанию оставляет их без изменений, и задача rake не меняет это поведение по умолчанию:

:rainbow:

Спасибо за подтверждение. Я хотел убедиться, так как один или два из рекомендованных методов для других задач, перечисленных на Administrative Bulk Operations, имели нежелательные побочные эффекты в прошлый раз, когда я их использовал.

Я использовал один из них для перемещения тем из одной категории в другую, но он переместил тему «О нас» вместе с обычными темами. Хотя, возможно, я использовал rails-скрипт вместо rake-задачи. Не уверен. :thinking:

Также я использовал rake-метод «переместить все темы с определённым тегом в одну категорию», который неправильно заполнил некоторые таблицы, связанные с тегами в базе данных.


edit: о, сегодня мой День торта! Если бы только торт был настоящим… Но, возможно, он и правда настоящий?

Спасибо! Я забыл об этом классе и не знал о задаче rake (или не помню, что забыл об этом!)

Какую команду я должен использовать перед этой командой?

@pfaffman @Canapin значит, его команда @leonardo — лучшее решение?

Вы можете попробовать это самостоятельно, но сначала сделайте резервную копию.
Перейдите в папку Discourse через командную строку.
Запустите контейнер с помощью команды ./launcher enter app.
Затем введите rake destroy:topics_all_categories.

Посмотрите, как это работает (мой тестовый экземпляр работает очень медленно):