Ich habe alle meine Inhalte importiert, aber ich möchte, dass sich das Datum des Themas jedes neuen Themas so ändert, als wäre es heute gepostet worden. Es gibt keine zusätzlichen Beiträge pro Thema.
Es ist „Zeitstempel ändern“ im Schraubenschlüsselmenü des Themas:
Der Dialog, der erscheint, erklärt:
Bitte wählen Sie den neuen Zeitstempel des Themas aus. Beiträge im Thema werden aktualisiert, um die gleiche Zeitdifferenz zu haben.
Was es wert ist, ich habe die API verwendet und mich nicht daran erinnert, created_at auf das tatsächliche Postdatum zu setzen.
Ja, das muss ich aber für über 3.000 Beiträge machen
Klingt nach einer Aufgabe für die API: updateTopicTimestamp.
Sie können das in Rails machen. Ich glaube, es gibt irgendwo ein Beispiel, wenn Sie suchen. Hier ist ein Anfang.
Topic.update_all(created_at: Time.now()
Aber ich würde ein paar Tests machen. Zum Beispiel möchten Sie auch die Beiträge aktualisieren?
Es gibt keine Beiträge, nur 1 Thema/Eröffnungsposting in diesem Thema. Würde der von Ihnen angegebene Befehl sofort funktionieren?
Das Dialogfeld zum Ändern des Zeitstempels des Themas besagt:
Bitte wählen Sie den neuen Zeitstempel des Themas aus. Beiträge im Thema werden aktualisiert, um die gleiche Zeitdifferenz zu haben.
Wenn Sie das Datum des Themas ändern, werden automatisch alle Antworten korrigiert, um sie an das neue Datum anzupassen. Wenn ein Thema ursprünglich auf den 1. Januar datiert war und eine Antwort auf den 5. Januar, wird durch Ändern des Themadatums auf den 2. Januar auch die Antwort auf den 6. Januar aktualisiert. Einfach!
Aus reiner Neugier, warum sollten alle 3000+ Themen dasselbe Datum haben?
Aber Neugier beiseite, Sie sollten dies mit der API oder der Rails-Konsole tun können, wenn Sie sich damit wohlfühlen (es ist eine gute Praxis, zuerst ein Backup zu erstellen, nur für den Fall).
In diesem Thema finden Sie einige Informationen darüber, wie Sie die relevante API für Dinge erhalten - Reverse engineer the Discourse API
Und es gibt einige Beispiele für verschiedene Rails-Techniken in Administrative Bulk Operations, die Sie verwenden könnten, um das zu erstellen, was Sie brauchen (oder Ihnen eine Idee geben, wonach Sie suchen müssen).
Ich stoße dies nur an, brauche immer noch zusätzliche Unterstützung, bitte.
Dies versucht, aber es scheint keine Änderungen vorzunehmen und es gibt auch keine Fehler.
Um Jons Vorschlag zu folgen, hier ist die Version für die Rails-Konsole.
cd /var/discourse
./launcher enter app
rails c
Dann, für ein bestimmtes Thema:
TopicTimestampChanger.new(topic: Topic.with_deleted.find(TOPIC_ID), timestamp: Time.now()).change!
Für alle Themen ohne Bedingungen:
Topic.find_each do |topic|
TopicTimestampChanger.new(topic: topic, timestamp: Time.now()).change!
end
Sie möchten vielleicht auch updated_at ändern.
