Я импортировал весь свой контент, но хочу, чтобы дата каждой новой темы отображалась как сегодняшняя. Дополнительные сообщения в темах отсутствуют.
Это «Изменить метку времени» в меню гаечного ключа темы:
В появившемся диалоговом окне объясняется:
Пожалуйста, выберите новую метку времени для темы. Сообщения в теме будут обновлены так, чтобы сохранить ту же разницу во времени.
К слову, я использовал 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.
