Как изменить дату темы после импорта

Я импортировал весь свой контент, но хочу, чтобы дата каждой новой темы отображалась как сегодняшняя. Дополнительные сообщения в темах отсутствуют.

Это «Изменить метку времени» в меню гаечного ключа темы:

В появившемся диалоговом окне объясняется:

Пожалуйста, выберите новую метку времени для темы. Сообщения в теме будут обновлены так, чтобы сохранить ту же разницу во времени.

К слову, я использовал API и забыл установить параметр created_at на фактическую дату публикации.

Да, мне всё равно нужно сделать это для 3000+ постов.

Звучит как задача для API: updateTopicTimestamp.

Это можно сделать в Rails. Думаю, где-то есть пример, если поискать. Вот начало.

Topic.update_all(created_at: Time.now)

Но я бы провел несколько тестов. Например, вы также захотите обновить посты?

Постов нет, только одна тема/первый пост в этой теме. Будет ли команда, которую вы дали, работать сразу после установки?

Диалоговое окно изменения временной метки темы гласит:

Пожалуйста, выберите новую временную метку темы. Сообщения в теме будут обновлены так, чтобы сохранить ту же разницу во времени.

Если вы измените дату темы, все ответы автоматически скорректируются относительно новой даты. Например, если тема была изначально датирована 1 января, а ответ — 5 января, то при изменении даты темы на 2 января ответ также будет обновлен на 6 января. Просто!

Из любопытства, зачем вам нужно, чтобы у всех 3000+ тем была одинаковая дата?

Но, aside от любопытства, вы сможете сделать это с помощью API или консоли Rails, если вам удобно с ними работать (хорошей практикой будет сначала создать резервную копию, на всякий случай).

В этой теме есть информация о том, как получить соответствующий API для различных задач — Reverse engineer the Discourse API

А также несколько примеров различных техник Rails по ссылке Administrative Bulk Operations, которые вы можете использовать для создания того, что вам нужно (или они дадут вам представление о том, что искать).

Напоминаю, что мне всё ещё нужна дополнительная поддержка, пожалуйста.

Попробовал это, вроде бы никаких изменений не произошло, но и ошибок тоже нет.

Чтобы следовать предложению Джона, вот версия для консоли Rails.

cd /var/discourse
./launcher enter app
rails c

Затем для конкретной темы:

TopicTimestampChanger.new(topic: Topic.with_deleted.find(TOPIC_ID), timestamp: Time.now()).change!

Для всех тем без условий:

Topic.find_each do |topic| 
	TopicTimestampChanger.new(topic: topic, timestamp: Time.now()).change!  
end

Возможно, вы также захотите изменить updated_at.