كيفية تغيير تاريخ الموضوع بعد الاستيراد

لقد قمت باستيراد كل المحتوى الخاص بي، ولكنني أريد أن يتغير تاريخ الموضوع لكل موضوع جديد كما لو كان منشورًا من تاريخ اليوم، ولا توجد مشاركات إضافية لكل موضوع

إنها “تغيير الطابع الزمني” في قائمة مفتاح ربط الموضوع:

يشرح مربع الحوار الذي يظهر:

يرجى تحديد الطابع الزمني الجديد للموضوع. سيتم تحديث المشاركات في الموضوع ليكون لها نفس فارق التوقيت.

للعلم، كنت أستخدم واجهة برمجة التطبيقات ولم أتذكر تعيين created_at إلى تاريخ النشر الفعلي.

إعجابَين (2)

نعم، أحتاج إلى القيام بذلك لـ 3000+ مشاركة

يبدو أن هذه مهمة لواجهة برمجة التطبيقات: updateTopicTimestamp.

إعجابَين (2)

يمكنك القيام بذلك في Rails. أعتقد أنه قد يكون هناك مثال في مكان ما إذا بحثت. إليك البداية.

Topic.update_all(created_at: Time.now()

لكنني سأقوم ببعض الاختبارات. على سبيل المثال، سترغب أيضًا في تحديث المنشورات؟

3 إعجابات

لا توجد منشورات، فقط موضوع واحد/منشور افتتاحي في هذا الموضوع، هل سيعمل الأمر الذي قدمته مباشرة؟

يقول مربع الحوار لتغيير الطابع الزمني للموضوع:

يرجى تحديد الطابع الزمني الجديد للموضوع. سيتم تحديث المشاركات في الموضوع ليكون لها نفس فارق التوقيت.

إذا قمت بتغيير التاريخ في الموضوع، فسيقوم تلقائيًا بتصحيح جميع الردود لتكون صحيحة بالنسبة للتاريخ الجديد. لذلك، إذا كان الموضوع مؤرخًا في الأصل في 1 يناير وتم الرد عليه في 5 يناير، فإن تغيير تاريخ الموضوع إلى 2 يناير سيقوم أيضًا بتحديث الرد إلى 6 يناير. سهل!

إعجابَين (2)

من باب الفضول، لماذا تريد أن تكون لجميع المواضيع الـ 3000+ نفس التاريخ؟

ولكن، بعيدًا عن الفضول، يجب أن تكون قادرًا على القيام بذلك باستخدام واجهة برمجة التطبيقات (API) أو وحدة تحكم Rails، إذا كنت مرتاحًا لاستخدامها (من الممارسات الجيدة أخذ نسخة احتياطية أولاً، فقط في حالة).

هناك بعض المعلومات حول كيفية الحصول على واجهة برمجة التطبيقات (API) ذات الصلة للأشياء في هذا الموضوع - Reverse engineer the Discourse API

وهناك بعض الأمثلة على تقنيات Rails المختلفة في Administrative Bulk Operations التي يمكنك استخدامها لبناء ما تحتاجه (أو تعطيك فكرة عما يجب البحث عنه).

إعجاب واحد (1)

مجرد رفع هذا الموضوع، ما زلت بحاجة إلى دعم إضافي، من فضلك

جربت هذا، لا يبدو أنه يحدث أي تغييرات ولكنه لا يظهر أي أخطاء أيضًا

لمتابعة اقتراح جون، هذه هي نسخة وحدة تحكم 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
إعجابَين (2)

قد ترغب أيضًا في تغيير updated_at.

إعجاب واحد (1)