قام المستخدم بحذف منشور "حول" للفئة

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

المنشور المعني (الذي يظهر فيه خطأ): About the Music category - Music - KGLW.net Forum

الفئة: Music - KGLW.net Forum

هل هناك طريقة لإصلاح هذا؟

(هل يجب تعيين جميع منشورات “حول” الفئة إلى حساب النظام لتجنب هذا السيناريو؟)

3 إعجابات

مرحباً،

لست متأكداً مما إذا كان هذا سيعمل، ولكن حاول إعادة بناء HTML للمنشور. يمكنك القيام بذلك عن طريق النقر على النقاط الثلاث → مفتاح الربط → “إعادة بناء HTML”.

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

ليس من الواضح تمامًا كيف تمكنوا من حذف موضوع “حول” نظرًا لأنه من المفترض أن يكون غير قابل للحذف. :thinking:

هل يمكنك تقديم المزيد من التفاصيل حول كيفية حدوث ذلك؟ هل قاموا بإنشاء الفئة؟

4 إعجابات

عند استخدام زر حذف كل المشاركات في صفحة المشرف الخاصة بالمستخدم، يتم حذف الموضوع “حول”. (في حالات أخرى، يتم نقل الملكية إلى @system)

يمكنك إنشاء فئة جديدة ونقل جميع المواضيع إليها ثم حذف الفئة القديمة. ولكن هذا يعتبر حلاً مؤقتًا أكثر من كونه إصلاحًا.

هذه خطوة جانبية مؤسفة. :thinking:

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

من الممكن تبديل معرف الموضوع (topic_id) للموضوع “حول” إلى معرف جديد باستخدام وحدة تحكم Rails، ولكن قد يكون خيار “تبديل الفئة الجديد” أسهل عبر واجهة المستخدم.

إعجابَين (2)

تحدث المشكلة عند تغيير الملكية إلى النظام قبل إلغاء حذف المنشور.

إعجابَين (2)

قد أحتاج إلى خطوات تفصيلية للتأكد من أننا نقوم بنفس الشيء. يبدو أنه تم حذف المستخدم بدلاً من المنشورات فقط؟

3 إعجابات

هناك مشكلتان مؤسفتان بشكل خاص عند دمجهما.

  1. عند استخدام “حذف جميع المشاركات” في صفحة مسؤول المستخدم، يتم حذف مشاركة “حول الفئة”. (ولكن يمكنك إلغاء حذفها)

  2. عند حذف مشاركات تم فيها حذف المؤلف أيضًا، وتغيير الملكية قبل إلغاء حذف المشاركة، لا يمكنك إلغاء حذف المشاركة. (كحل بديل، يمكنك حذف الموضوع وإلغاء حذفه. هذا يلغي حذف المشاركة الأولى)

لذلك عندما تقوم بما يلي:

  • إنشاء مستخدم اختبار وفئة اختبار،
  • جعل مستخدم الاختبار مالكًا لموضوع “حول الفئة”،
  • حذف جميع مشاركاتهم من صفحة مسؤول المستخدم،
  • (اختياري) إنشاء موضوع آخر مملوك لمستخدم الاختبار،
  • (اختياري) الرد على كلا الموضوعين باستخدام مستخدم مختلف،
  • حذف مستخدم الاختبار،
  • تغيير ملكية موضوع “حول” (والموضوع الآخر)،
  • محاولة إلغاء حذف المشاركات،

تتلقى خطأ، لأنه لا يمكنك إلغاء حذف المشاركة. ملاحظة جانبية: الردود في المواضيع مرئية للمستخدمين الآخرين، لكنهم لا يرون المشاركة الأولى.

الحل البديل للمشكلة 2 لا يعمل، لأنك غير مسموح لك بحذف مواضيع “حول”

6 إعجابات

نعم، أعتقد أن المستخدم أنشأ الفئة.

“إعادة بناء HTML” لا يبدو أنه غيّر أي شيء.

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

أنا لست خائفًا من وحدة تحكم Rails، لذلك إذا كان تعيين topic_id جديد هو الطريقة “الصحيحة” لتنظيم الأشياء، فأنا أميل إلى القيام بذلك. لكنني أقدر بعض المساعدة مع الأوامر المحددة لتشغيلها؛ هل سيكون شيئًا مثل Category.find(10).topic_id = 723 …؟

من ناحية أخرى:

… ربما تكون هذه طريقة أسرع للحل؟ (على الرغم من أنني أرى فقط “أرشفة الموضوع” وليس “حذف الموضوع” في قائمة أيقونة المفتاح…)

لم أقم باختبار هذا بنفس القدر من الدقة مثل الآخرين هنا (شكرًا لكم!!) ولكن يبدو لي أن الحل للمشكلة المذكورة في المنشور الأول بسيط إلى حد ما.

  • لا تسمح بحذف مواضيع “حول” (about topics) في إدارة المستخدمين (بواسطة المشرفين/المسؤولين على الموقع)

عند محاولة القيام بما سبق، امنعه واعرض رسالة خطأ مفيدة. أنقل هذا إلى قسم الأخطاء (Bug) لأنه خطأ أن مواضيع “حول” يمكن حذفها في الحالة المذكورة أعلاه.

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

حاولت أيضًا حالة الحذف الذاتي للمستخدم (يجب تخفيض رتبة المستخدم أولاً لرؤية زر حذف الحساب). حذف هذا المستخدم أيضًا نقل ملكية الموضوع إلى النظام. أيضًا، أرى أن القيمة الافتراضية لـ delete user self max post count مضبوطة على 1، مما يعني أنه افتراضيًا لا يمكن للمستخدم حذف نفسه إذا كان لديه أكثر من موضوع واحد. لذا نحن آمنون هنا على أي حال.

واختبرت حذف المستخدم عبر إدارة المستخدمين. ومن المثير للاهتمام، طالما كان هناك موضوع “حول” واحد فقط، لم أحصل على زر حذف المنشور. ولكن بعد إنشاء موضوع ثانٍ، حصلت على زر حذف المنشور. تحديده وكتابة النص الطويل للتأكيد ثم نجح - تمكنت من حذف منشورات المستخدم بما في ذلك موضوع “حول”. أخيرًا، تمكنت من تكرار المشكلة! :wink:

وأخيرًا، تمكنت أيضًا من حذف موضوع “حول” باستخدام الإجراءات المجمعة. تكرار آخر للمشكلة! عذرًا، أرى الآن أنني لم أتمكن من تكرار حذف مواضيع “حول” بالإجراءات المجمعة. إنه يفشل ببساطة في القيام بذلك بصمت.

بالنظر إلى ما سبق، يمكننا تجاهل حالات حذف المستخدم (عبر إدارة المستخدمين والحذف الذاتي) لأن ملكية المنشورات تُمنح للنظام.

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

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

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

هل تمكنت من حل موقفك يا @alxndr؟

إعجابَين (2)

قد يمنع هذا حدوث ذلك في المستقبل.

ومع ذلك، كيف يجب أن أتعافى من الوضع الحالي، حيث يرى المستخدمون صفحة خطأ عند محاولة قراءة منشور “حول” لهذه الفئة، على الرغم من أن المنشور مملوك للمستخدم system؟

لم أجرب أي شيء بعد؛ كنت آمل أن يتدخل شخص ما إما بـ “نعم هذا هو الأمر الصحيح” أو “لا تفعل ذلك فسوف يدمر كل شيء”…

إعجابَين (2)

أعتقد أن هذا هو التنسيق الذي استخدمته عندما جربته منذ فترة:

Category.where(id: CAT_ID).update(topic_id: NEW TOPIC_ID)

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

@alxndr هل يمكنك تأكيد أنك تستضيف بنفسك، وليس على استضافتنا؟ إذا كنت على استضافتنا أو انتقلت إلى استضافتنا، يمكنك التواصل مع فريقنا للحصول على الدعم وسيقوم أحد مساعدينا التقنيين بمساعدتك في إصلاح هذا الأمر.

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

إذا قررت التجربة مع وحدة تحكم rails أو واجهة برمجة التطبيقات، فأنت في منطقة مجهولة، لذا تأكد من إجراء نسخة احتياطية كاملة لموقعك أولاً في حالة الحاجة إلى التراجع عن التغيير!

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

ها :slight_smile: يبدو أنك لا تثق بنصيحتي @tobiaseigen :slight_smile:

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


لم أكن واثقًا من أن واجهة برمجة التطبيقات (API) ستعمل، حيث تم حظر محاولة القيام بأشياء مماثلة في واجهة المستخدم، ولكن يبدو أنني حققت بعض النجاح (:partying_face:).

في هذه الحالة، استخدمت نقطة النهاية لاستعادة المنشور بدلاً من استعادة الموضوع (وهو ما حاولت خيار إلغاء الحذف في المنشور القيام به):

/posts/POST_ID/recover

4 إعجابات

نعم، استضافة ذاتية.

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

يبدو أن زر “إلغاء حذف هذا المنشور” يستخدم نقطة النهاية هذه، ومع ذلك فإنه يُرجع خطأ 403، مع errorThrown فارغ، و textStatus: "error".

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

من اختباري، كان زر إلغاء الحذف يحاول استخدام نقطة نهاية استعادة الموضوع (/t/TOPIC_ID/recover) وكان يرمي خطأ 403. ولكنه بدا سعيدًا عندما استخدمت إصدار استعادة المشاركات بدلاً من ذلك.

هل يمكنك التحقق مرة أخرى للتأكد؟

إعجابَين (2)

آه شكراً للتوضيح، أنت على حق.

لست متأكداً من كيفية تحديد معرف المنشور الفردي؛ معرف الفئة هو 10 وأعتقد أن معرف الموضوع هو 723؟
تحديث: آه، وجدتها! يوجد data-post-id في عنصر DOM الخاص بـ \u003carticle\u003e

لا أرى نقطة النهاية هذه في وثائق واجهة برمجة التطبيقات… هل يجب أن تكون PUT؟ مع أي بيانات؟
تحديث: نعم PUT، بدون بيانات — لقد نجحت! شكراً لك @JammyDodger !!

إعجابَين (2)