لقد قمت مؤخرًا بتحميل ملفات PDF لعروض أكاديمية (إلى هذا الموضوع حول التنبؤ المناخي الموسمي، كما حدث).
إن اصطلاح تسمية الملفات الذي أستخدمه هو:
0000-leadauthor-[etal-]title-title-title.pdf
حتى الآن، كل شيء على ما يرام. حتى اكتشفت أن لدي خطأ في اسم المؤلف الرئيسي. ولكن عندما أحاول تحميل الملف نفسه تحت اسم ملف مصحح، يلاحظ نظام Discourse أن الملف مطابق تمامًا في جوانب أخرى — أعتقد أن هناك عملية تجزئة (hashing) تحدث هنا — ويقوم بتقديم مرجع إلى الملف الأصلي بدلاً من ذلك، مع بقاء اسم الملف دون تغيير وما زال غير صحيح.
الحل البديل الذي اعتمدته هو تغيير الإعداد التالي إلى 1 (الافتراضي هو 48)، وإزالة جميع الإشارات في التنسيق، والانتظار حتى يتم حذف الملف الناتج:
Settings > Files > clean orphan uploads grace period hours
كما جربت تعيين هذا المعلمة المحددة إلى 0، لكن ذلك لم يبدو فعالاً. في هذه الحالة، قد يكون من الأفضل تعديل تلميح الأداة ليقرأ: “لتعطيل فترة السماح، اضبطها على 0”. أو بشكل مناسب بديل: “لتفعيل تأثير شبه فوري، اضبطها على 0”.
لا يمكنني معرفة مدى تكرار تشغيل هذا النوع من الصيانة، لكنني افترضت أنه يتم كل ساعة؟ ربما يتم يوميًا بدلاً من ذلك؟ سيكون من المفيد معرفة ذلك أيضًا.
شكرًا مسبقًا على أي مساعدة حول كيفية تسريع عملية إعادة تسمية هذه الملفات! لدي حل بديل، لكنه غير عملي وبطيء إلى حد ما.
بما أنني لستُ على دراية بـ Ruby، يبدو أن 0 تعني 1 أيضًا. ربما يجب أن تنص تلميح المعامل على: “يُفسَّر الرقم 0 على أنه 1.” أو ما شابه ذلك. خاصةً أن الصفر غالبًا ما يحمل المعنى الخاص “تعطيل” في ظروف أخرى. شكرًا لك @neounix.
أعتقد أن ما تريد فعله هو تحديث سجل الرفع من خلال وحدة تحكم Rails، إذا كنت تستضيفه بنفسك. أشك في وجود طريقة للقيام بذلك عبر واجهة برمجة التطبيقات، لكنني لم أفحص الأمر بعد.
انتظر. لست متأكدًا تمامًا مما تحاول فعله. هل هو تغيير الاسم الذي يراه الأشخاص في المنشورات التي تم رفعها؟ إذا كان الأمر كذلك، فقد ترغب في القيام بشيء مثل:
rake posts:remap["old-name.pdf","newname.pdf"]
كما هو موضح في استبدال نص في جميع المنشورات. أعتقد أنه بالنسبة لأغراضك، لا يهم اسم الملف الأصلي في نموذج الرفع حقًا.
لقد حاولت إعادة بناء منشور يحتوي على هذا الرفع ولم يحدث شيء.
تعديل:
def rename_upload(old_name, new_name)
u=Upload.find_by(original_filename: old_name)
u.original_filename=new_name
u.save
end
إذا قمت بلصق ذلك، فيمكنك:
rename_upload('name.pdf','better-name.pdf')
سيفعل ذلك ما يلزم لتحميل الملفات بالاسم الأفضل.
في حياتي السابقة كأستاذ أكاديمي، كان لدي طريقتي المحددة في تسمية ملفات PDF الخاصة بي والتي كانت مختلفة عن أي شخص آخر؛ أنا متأكد تقريبًا أن لزوجتي طريقتها الخاصة. تخميني هو أن لن أحدًا أن يعجبهم أسماء ملفاتك حتى عندما تحصل عليها “بشكل صحيح”.
ليس ما كنت أحاول فعله. كانت سلسلة leadauthor جزءًا من اسم الملف. لا أكثر. لكن عندما قمت بتعديل اسم الملف (لأن فهمي لاصطلاحات تسمية العائلات لدى الأكاديميين الإسبان محدود للغاية) وحاولت رفع الملف المُعاد تسميته، لاحظ نظام discourse وجود ملف مطابق له في مظهره، فاستبدله بالملف المستهدف الأصلي واسمه. أعتقد أن هذا يمكن اعتباره ميزة؟ لم أستطع رفع الملف ذي الاسم المصحح إلا بعد حذف ذلك الملف من قاعدة بيانات الموقع. أقدر حقًا مساعدتك واهتمامك @pfaffman.
بعد الاختبار في مثيلي، يمكنك تغيير اسم الملف في [filename.pdf|attachment](upload://filehash.pdf)، ورغم أن اسم الملف يظهر كـ filename.pdf في المنشور، إلا أنه يُحمّل باسم الملف الأصلي. أظن أن هذا هو ما يريده بالضبط: إعادة تسمية اسم الملف المستخدم عند التحميل.
ليس أمرًا حرجًا، لكنني أود أيضًا القدرة على إعادة تسمية الملفات المُحمَّلة.