أعتقد أن جدول post_uploads لم يعد موجودًا. إنه الآن uploads و upload_references. قد تحتاج إلى تحديث هذا المقتطف القديم ليأخذ ذلك في الاعتبار إذا كنت تحاول هذه الطريقة.
كيف قمت بحذف هذه المشاركات؟ هل قمت بحذفها بشكل ناعم فقط في واجهة المستخدم؟ أعتقد أن الإعداد الذي ينظف الصور اليتيمة (clean orphan uploads grace period hours) لا يأخذ في الاعتبار ما إذا كانت قد تم حذفها بشكل ناعم، ويهتم فقط بما إذا كانت الصورة لا تزال موجودة في أحدث إصدار من المشاركة:
أعتقد أنه يمكنك تحديد جميع المشاركات في وحدة تحكم Rails واستخدام PostDestroyer عليها لحذفها بشكل دائم، وبعد ذلك سيتم تنظيف الملفات المرفقة في المرة التالية التي يتم فيها تشغيل Jobs::CleanUpUploads (أو يتم تشغيلها يدويًا).
إذا كانت فئة بأكملها، على سبيل المثال، أعتقد أنه يمكنك استخدام شيء مثل هذا:
category = Category.where(id: CATEGORY_ID).pluck(:id)
topic = Topic.where(category_id: category).pluck(:id)
topic.each do |t|
Post.where(topic_id: t).find_each do |p|
PostDestroyer.new(Discourse.system_user, p).destroy
p.destroy!
end
end
أعتقد أن هناك أيضًا بعض المحادثات في هذا الموضوع قد تجدها مفيدة Delete deleted-posts permanently in bulk? - #57 by Simon_Manning
وسأضيف التحذير المعتاد بشأن أخذ نسخة احتياطية قبل إجراء تغييرات في وحدة تحكم Rails، فقط في حالة. تنبيه السكين الحاد.
(للعلم فقط، ولكن Jobs::DirectoryRefreshDaily و Jobs::DirectoryRefreshOlder هما اللذان يملآن دليل المستخدم، لذلك ليسا ذوي صلة هنا)