خطأ في الحذف الدائم

أعتقد أن هناك خطأ في الحذف الدائم.

لقد حذفت بعض المشاركات. الآن لا يمكنني فتح قائمة المشاركات المحذوفة.

يمكنك أن ترى هنا أنه لا يزال لدي 342 مشاركة محذوفة. ولكن عندما أنقر عليها. يؤدي ذلك إلى صفحة 404.

لا يزال بإمكاني فتح قائمة الحذف الخاصة بالمستخدمين الآخرين ولكن ليس قائمتي الخاصة.

هل هناك أي شيء يمكننا القيام به لإصلاح ذلك؟

3 إعجابات

حسنًا، أعتقد أنني اكتشفت خطوات إعادة إنتاج الخطأ.

لست متأكدًا مما إذا كنت بحاجة إلى حسابين، ولكن إليك وضعي:

  1. ينشئ الحساب أ موضوعًا، ثم يثبته ويغلقه.
  2. يقوم الحساب أ بحذف الموضوع بشكل ناعم.
  3. انتظر لمدة 5 دقائق، وسجل الدخول باستخدام الحساب ب، وافتح قائمة حذف الحساب أ (على سبيل المثال: www.example.com/u/username/deleted-posts)
  4. ابحث عن المنشور الذي قام الحساب أ بحذفه للتو بشكل ناعم، وافتحه.
  5. إذا حاولت حذف المنشور بشكل دائم، فستظهر لك رسالة خطأ: لا يمكن حذف المنشور لأنه توجد منشورات أخرى.
  6. تحتاج إلى حذف رسالة تثبيت وإغلاق الموضوع الموجودة أسفل المنشور، ثم حاول الحذف الدائم مرة أخرى.
  7. ستنجح، ولكن الآن لا يمكنك فتح قائمة حذف الحساب أ بعد الآن.
3 إعجابات

هل يمكن لأحد أن يلقي نظرة على هذا، من فضلك؟

لقد كنت أقوم بتنظيف بعض المنشورات التي تحتوي على معلومات حساسة والآن نحن عالقون…

3 إعجابات

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

إعجابَين (2)

يمكنني الوصول إليها من المنشور.

ولكن نظرًا لأنني لا أعرف أي المنشورات هي، فإن قائمة حذف المنشورات أمر بالغ الأهمية.

بدونها، يجب عليّ المرور يدويًا عبر جميع الرسائل الخاصة والمواضيع العامة للعثور عليها.

إعجابَين (2)

لقد جربت أيضًا حذف ملف deleted-posts.json. لكن المعلومات لا تحتوي على منشورات محذوفة.
إنه يعرض فقط أشياء مثل “user_badges” ومعلومات المستخدم الأخرى.

إعجابَين (2)

إذا تمكنت من الحصول على قائمة بمعرفات المنشورات المحذوفة بطريقة ما، فسيكون ذلك مفيدًا أيضًا.

إعجابَين (2)

أنا أحاول إعادة الإنتاج:

  • يقوم المسؤول أ بإنشاء موضوع جديد، وتثبيته عالميًا (إلى الأبد)، ثم يغلقه
  • يقوم المسؤول أ بعد ذلك بحذف الموضوع بشكل غير دائم

* يجد المسؤول ب هذا الموضوع عن طريق الوصول إلى قائمة `/deleted-posts` الخاصة بالمسؤول أ من ملفه الشخصي * يحاول المسؤول ب حذف الموضوع بشكل دائم - يتلقى خطأ "لا يمكنك حذف هذا الموضوع بشكل دائم لأن هناك مشاركات أخرى." * يقوم المسؤول ب بحذف مشاركات الإجراء الصغيرة "تثبيت" و "إغلاق" * يعيد المسؤول ب محاولة الحذف الدائم - يتم الحذف بنجاح
* ومع ذلك، لا يمكن للمسؤول ب الآن الوصول إلى قائمة `/deleted-posts` الخاصة بالمسؤول أ، مع وجود خطأ `GET https://greedy.jammydodger.monster/posts/jammydodger/deleted?offset=0`

على الرغم من أن المسؤول أ والمسؤول ج لا يزالان بإمكانهما الوصول إلى قائمة /deleted-posts الخاصة بالمسؤول أ. على المدى القصير، @VincentAlse، هل يمكنك استخدام حساب المسؤول الثانوي للوصول إلى قائمة /deleted-posts للعثور على المشاركات الأخرى التي ترغب في حذفها؟ بدلاً من ذلك، يمكنك استخدام استعلام data-explorer لتحديدها؟

3 إعجابات

مرحباً @JammyDodger

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

سألقي نظرة على مستكشف البيانات. هل يمكنني الاستعلام عن المشاركات المحذوفة باستخدامه؟

إعجابَين (2)

هذا مؤسف. إذا كان لديك وصول إلى المكون الإضافي لاستكشاف البيانات، أعتقد أن شيئًا كهذا يجب أن يكرر قائمة /deleted/posts لمستخدم معين (مع إضافة post_id كإجراء احترازي):

-- [params]
-- user_id :user_id

SELECT p.created_at AS reltime$time,
       id AS post_id,
       id
FROM posts p
WHERE p.user_id = :user_id
AND p.deleted_at IS NOT NULL
ORDER BY p.created_at DESC
4 إعجابات

دعني أجرب.

3 إعجابات

هل نجح ذلك معك يا @VincentAlse؟ أعتقد أنه يجب أن تكون هناك طرق متعددة للعثور على المنشورات التي تريد حذفها إذا لم تمنحك هذه الطريقة القائمة التي تحتاجها؟

3 إعجابات

سؤال غبي. ما هو user_id؟ أعتقد أن user_id الخاص بي هو 1 بناءً على صفحة .json.

أتلقى هذه الرسالة: ActiveRecord::PreparedStatementInvalid: missing value for :user_id in /*

@JammyDodger

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

بالنظر إلى لقطة الشاشة هذه، يبدو أنك قمت بتعديل المعلمة في الأعلى، مما سيمنعها فعليًا من العمل. إذا تركتها كـ :user_id، فستمنحك مربع اختيار عند تشغيلها حيث يمكنك كتابة اسم مستخدم. :+1:

بدلاً من ذلك، يمكنك التخلي عن المعلمة وإضافة معرف المستخدم الذي حصلت عليه من json إلى سطر WHERE p.user_id =.

هل هذا منطقي؟

3 إعجابات

يبدو أنك قد تتلقى المساعدة بالفعل، ولكن النقر عليها يأخذني إلى /u/deleted-posts، وهو يعمل.

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

يعمل الآن!

اعتقدت أنني بحاجة إلى وضع user_id في الكود.

شكراً جزيلاً @JammyDodger

4 إعجابات

لقد قمت بإصلاح الخلل الذي أبلغت عنه باستخدام طلب السحب هذا بالأمس، والذي تم دمجه بالفعل ويمكن نشره إذا قمت بتحديث مثيل Discourse الخاص بك:

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

أعتقد أن كل شيء يجب أن يعمل بشكل جيد الآن. يرجى إعلامنا إذا كانت لديك مشاكل أخرى.

6 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 3 أيام. لم تعد الردود الجديدة مسموح بها.