Cómo cambiar la fecha del tema después de importar

Importé todo mi contenido, pero quiero que la fecha del tema de cada tema nuevo cambie como si se hubiera publicado a partir de hoy, no hay publicaciones adicionales por tema.

Es “Cambiar marca de tiempo” en el menú de herramientas del tema:

El diálogo que aparece explica:

Selecciona la nueva marca de tiempo del tema. Las publicaciones del tema se actualizarán para tener la misma diferencia horaria.

Por si sirve de algo, estaba usando la API y no recordé establecer created_at a la fecha real de la publicación.

2 Me gusta

Sí, pero necesito hacer esto para más de 3000 publicaciones.

Suena como un trabajo para la API: updateTopicTimestamp.

2 Me gusta

Puedes hacerlo en Rails. Creo que podría haber un ejemplo en alguna parte si buscas. Aquí tienes un comienzo.

Topic.update_all(created_at: Time.now()

Pero haría algunas pruebas. Por ejemplo, ¿también querrás actualizar las publicaciones?

3 Me gusta

No hay publicaciones, solo 1 tema/publicación de apertura en ese tema, ¿funcionaría el comando que diste de inmediato?

El cuadro de diálogo para cambiar la marca de tiempo del tema dice:

Seleccione la nueva marca de tiempo del tema. Las publicaciones del tema se actualizarán para tener la misma diferencia de tiempo.

Si cambia la fecha del tema, se corrigen automáticamente todas las respuestas para que sean correctas en relación con la nueva fecha. Por lo tanto, si un tema tenía originalmente la fecha del 1 de enero y una respuesta del 5 de enero, al cambiar la fecha del tema al 2 de enero, la respuesta también se actualizará al 6 de enero. ¡Fácil!

2 Me gusta

Por curiosidad, ¿por qué querrías que los más de 3000 temas tuvieran la misma fecha?

Pero, dejando la curiosidad a un lado, deberías poder hacerlo con la API o la consola de Rails, si te sientes cómodo usándola (es una buena práctica hacer una copia de seguridad primero, por si acaso).

Hay información sobre cómo obtener la API relevante para cosas en este tema: Reverse engineer the Discourse API

Y hay algunos ejemplos de diferentes técnicas de Rails en Administrative Bulk Operations que podrías usar para construir lo que necesitas (o darte una idea de qué buscar).

1 me gusta

Solo subo esto, todavía necesito apoyo adicional, por favor.

Intenté esto, no parece hacer ningún cambio pero tampoco genera errores.

Para seguir la sugerencia de Jon, esta es la versión de la consola de Rails.

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

Luego, para un tema específico:

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

Para todos los temas sin condiciones:

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

También podrías querer cambiar updated_at.

1 me gusta