Это самый быстрый и простой способ, и с большим отрывом.
Скачайте список пользователей, как предложил @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. Думаю, вы очень пожалеете, если удалите их.
Это создаст резервную копию на случай, если всё будет уничтожено.
Это почти наверняка плохая идея, но это то, что вы просили.
Спасибо за подтверждение. Я хотел убедиться, так как один или два из рекомендованных методов для других задач, перечисленных на Administrative Bulk Operations, имели нежелательные побочные эффекты в прошлый раз, когда я их использовал.
Я использовал один из них для перемещения тем из одной категории в другую, но он переместил тему «О нас» вместе с обычными темами. Хотя, возможно, я использовал rails-скрипт вместо rake-задачи. Не уверен.
Вы можете попробовать это самостоятельно, но сначала сделайте резервную копию.
Перейдите в папку Discourse через командную строку.
Запустите контейнер с помощью команды ./launcher enter app.
Затем введите rake destroy:topics_all_categories.
Посмотрите, как это работает (мой тестовый экземпляр работает очень медленно):