لا يمكن إلغاء حذف منشورات وصف الفئة التي أنشأها مستخدم محذوف

في مرحلة ما بعد إنشاء بعض الفئات، تم حذف المستخدم الذي أنشأها. عند مراجعة السجل، أرى أن Discourse قد حذف هذه المنشورات تلقائيًا في نفس الوقت الذي تم فيه حذف المستخدم.

لم نلاحظ أن هذا التسبب في أي مشاكل إلا بعد مرور بعض الوقت، عندما أصبح من الواضح أنه بينما يمكن للمسؤولين رؤية (وتحرير) منشورات وصف الفئة المتأثرة، فإن المستخدمين العاديين عند محاولة عرض تلك المنشورات، يحصلون على الرسالة التالية بدلاً من ذلك: “خطأ؛ أثناء محاولة التحميل؛ حدث خطأ ما.”

تظهر منشورات وصف الفئة هذه بخلفيات حمراء. أستطيع أن أرى أنها قد تم حذفها، ومتى. أستطيع رؤية زر “إلغاء الحذف”، لكن النقر عليه لا يفعل شيئًا على الإطلاق.

إذا انتقلت إلى إعدادات إحدى الفئات المتأثرة (عن طريق النقر على زر تحريرها)، ثم نقرت على زر تحرير الوصف، يتم نقلك إلى المنشور المحذوف المقابل. يمكنني إجراء تغييرات وحفظها، وبعد تحديث الصفحة، يظهر الوصف الجديد. لكن المستخدمين غير المسؤولين لا يزالون غير قادرين على رؤية محتويات المنشور (فقط تلك الرسالة الخاصة بالخطأ).

تمكنت من تغيير ملكية أحد المنشورات إلى حساب المسؤول الخاص بي، لكن زر “إلغاء الحذف” لا يزال لا يعمل.

وجدت تقارير مشابهة على Meta Discourse، لكن حتى الآن لم يساعد أي من النصائح المقدمة.

وجدت إشارة إلى شخص تمكن من إلغاء حذف منشور متأثر بشكل مماثل باستخدام واجهة برمجة تطبيقات Discourse، وبدأت في البحث في ذلك، لكنني لم أتمكن من العثور على أي شيء يتعلق بإلغاء حذف المنشورات في وثائق الـ API. انظر: Can't recover a topic by a deleted user

آمل أن يكون هناك حل لا يتطلب إعادة إنشاء الفئات المتأثرة من الصفر.

تحديث: عندما أنقر على زر “إلغاء الحذف” لأحد هذه المنشورات، يتم إنشاء إدخال في سجل الأخطاء:

Error: Forbidden
Url: mysite/assets/ember_jquery-189e46ebcb33594b835e782fd1ce916ec750bc0cf980ebc4fb7796649161a18d.js
Line: 1
Column: 266460
Window Location: mysite/t/about-the-showcases-and-use-cases-category/28
3 إعجابات

إذن، هل أصدر شخص ما أمر حذف للمستخدم الذي أنشأ الفئات؟ هل هناك سبب محدد لحذف هذا المستخدم بدلاً من إخفاء هويته؟

من الصحيح أن موضوع وصف الفئة سيكون مملوكًا للمستخدم الذي ينشئ الفئة، لذا فإن حذف هذا المستخدم (وجميع منشوراته) قد يتسبب في ذلك. @tshenry، هل يمكننا اختبار هذا السيناريو الأسبوع القادم؟

3 إعجابات

تمكّنت من تجربته بسرعة للتو وإعادة إنتاج نفس النتائج.

  1. إنشاء فئة مع مستخدم مدير
  2. إلغاء حالة المدير للمستخدم وحذفه
  3. يتم حذف موضوع “حول” الخاص بالفئة بشكل ناعم عند حذف المستخدم
  4. محاولة إلغاء الحذف/استعادة الموضوع لا تعمل
  5. تغيير الملكية يعمل تقنيًا، لكن الموضوع يبقى في حالة محذوفة غريبة بغض النظر عن ما تفعله من واجهة المستخدم.

من وحدة التحكم، يبدو أن سجل posts المرتبط بالموضوع يتم حذفه عند حذف المستخدم. يحتوي سجل الموضوع على العديد من الأصفار عند النظر في مختلف السمات المتعلقة بالمنشورات.

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


تمكّنت من التوصل إلى حل بديل للعودة إلى وضع جيد، لكنني اضطررت لاستخدام سطر الأوامر. @jrivettcsa أنصحك بأخذ نسخة احتياطية قبل تجربة هذا:

القيم المطلوبة

تأكد من نسخ أي محتوى من موضوع “حول” تريد استخدامه لاحقًا إلى مفكرة أو ما شابه، ثم تابع ما يلي:

أدخل وحدة تحكم Rails

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

استبدل <ABOUT_TOPIC_ID> في الأمر أدناه بمعرف موضوع “حول” الفئة، ثم شغّله لحذف الموضوع التالف بشكل نهائي.

Topic.where(id: <ABOUT_TOPIC_ID>).destroy_all

اضغط على زر q للعودة إلى وحدة التحكم إذا لزم الأمر

لا تزال الفئة مرتبطة بالموضوع السيء، لذا نحتاج إلى مسح ذلك. استبدل <CATEGORY_ID> في الأمر أدناه بمعرف الفئة، ثم شغّله.

Category.where(id: <CATEGORY_ID>).update_all(topic_id: nil)

اضغط على زر q للعودة إلى وحدة التحكم إذا لزم الأمر

اخرج من وحدة تحكم Rails وشغّل مهمة rake التالية لإنشاء موضوع “حول” جديد للفئة:

exit
rake categories:create_definition

الآن يجب أن تكون الفئة مُصلحة! يمكنك تكرار العملية حسب الحاجة.

6 إعجابات

نعم، تم إجراء بعض التغييرات غير المحظوظة من قبل شخص كان يجب أن يكون أكثر وعياً. لا أستطيع أن أقول أكثر من ذلك. لحسن الحظ، يتم تسجيل هذه الأمور بواسطة Discourse.

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

شكرًا لك على تأكيد المشكلة وتقديم الحل. سأحاول تطبيقه وسأشارك النتائج هنا.

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

هذه الحل عمل بشكل مثالي. شكرًا لك!

أصلحت كل منها على حدة، لكن أعتقد أنه كان بإمكاني تنفيذ أمري destroy_all وupdate_all في جلسة وحدة تحكم Rails واحدة، ثم إصدار أمر rake categories:create_definition مرة واحدة في النهاية. ما رأيك؟ قد يوفر ذلك على شخص ما بضع دقائق في وقت ما.

4 إعجابات

هذا بالتأكيد خطأ @jrivettcsa — عندما يؤدي حذف مستخدم إلى تعطل الموقع، فهذا أمر سيء! سنقوم بإصلاحه.

4 إعجابات

شكرًا لك على الإبلاغ عن هذه المشكلة. قمت بإصلاحها في هذا طلب الدمج

عند حذف مستخدم، لم يعد المنشور الذي يصف الفئة يُحذف. بدلاً من ذلك، يتم تغيير مؤلف المنشور من المستخدم الأصلي إلى مستخدم النظام.

4 إعجابات