J’ai importé tout mon contenu, mais je souhaite que la date du sujet de chaque nouveau sujet soit modifiée comme s’il avait été publié à la date d’aujourd’hui, il n’y a pas de publications supplémentaires par sujet.
C’est « Changer l’horodatage » dans le menu de la clé à molette du sujet :
La boîte de dialogue qui s’affiche explique :
Veuillez sélectionner le nouvel horodatage du sujet. Les publications du sujet seront mises à jour pour avoir la même différence de temps.
Pour information, j’utilisais l’API et je n’ai pas pensé à définir created_at à la date réelle de la publication.
Ouais, je dois faire ça pour plus de 3 000 publications cependant
On dirait un travail pour l’API : updateTopicTimestamp.
Vous pouvez le faire dans Rails. Je pense qu’il pourrait y avoir un exemple quelque part si vous cherchez. Voici un début.
Topic.update_all(created_at: Time.now()
Mais je ferais quelques tests. Par exemple, vous voudrez aussi mettre à jour les posts ?
Il n’y a pas de publications, seulement 1 sujet/publication d’ouverture dans ce sujet, la commande que vous avez donnée fonctionnerait-elle directement ?
La boîte de dialogue pour changer l’horodatage du sujet indique :
Veuillez sélectionner le nouvel horodatage du sujet. Les messages du sujet seront mis à jour pour avoir la même différence de temps.
Si vous changez la date du sujet, cela corrige automatiquement toutes les réponses pour qu’elles soient correctes par rapport à la nouvelle date. Ainsi, si un sujet était initialement daté du 1er janvier et une réponse du 5 janvier, changer la date du sujet au 2 janvier mettra également à jour la réponse au 6 janvier. Facile !
Par curiosité, pourquoi voudriez-vous que tous les 3000+ sujets aient la même date ?
Mais, curiosité mise à part, vous devriez pouvoir le faire avec l’API ou la console Rails, si vous êtes à l’aise avec (c’est une bonne pratique de faire une sauvegarde d’abord, juste au cas où).
Il y a des informations sur la façon d’obtenir l’API pertinente pour les choses dans ce sujet - Reverse engineer the Discourse API
Et il y a quelques exemples de différentes techniques Rails dans Administrative Bulk Operations que vous pourriez utiliser pour construire ce dont vous avez besoin (ou vous donner une idée de ce qu’il faut rechercher).
Je remonte ce sujet, j’ai toujours besoin d’aide s’il vous plaît
J’ai essayé cela, cela ne semble apporter aucun changement mais ne génère pas non plus d’erreurs.
Pour suivre la suggestion de Jon, voici la version console Rails.
cd /var/discourse
./launcher enter app
rails c
Ensuite, pour un sujet spécifique :
TopicTimestampChanger.new(topic: Topic.with_deleted.find(TOPIC_ID), timestamp: Time.now()).change!
Pour tous les sujets sans conditions :
Topic.find_each do |topic|
TopicTimestampChanger.new(topic: topic, timestamp: Time.now()).change!
end
Vous voudrez peut-être aussi changer updated_at.
