خطأ في تحميل الدردشة

لقد استغرقت بعض الوقت للبحث في هذا، ولكن أعتقد أنني وجدت السبب. أعتقد أن الأمر يتعلق بـ هذا الكود:

def fetch_uploads(params:, guardian:)
  return [] if !SiteSetting.chat_allow_uploads
  guardian.user.uploads.where(id: params.upload_ids) # بالتحديد، هنا
end

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

# هل لدينا بالفعل هذا الملف المرفوع؟
@upload = Upload.find_by(sha1: sha1)

# ...

# إرجاع الملف المرفوع السابق إن وجد
if @upload
  add_metadata!
  UserUpload.find_or_create_by!(user_id: user_id, upload_id: @upload.id) if user_id
  return @upload
end

أعتقد أن الحل الممكن سيكون المرور عبر UserUploads بدلاً من مجرد النظر إلى الملفات المرفوعة التي تخص المستخدم. يربط UserUpload الملفات المرفوعة بعدة مستخدمين، وهو ما يبدو أننا نحتاجه. لست متأكدًا بنسبة 100٪ بعد من كيفية القيام بذلك بشكل صحيح؛ لقد تأخر الوقت، لذا سأذهب للنوم، ولكن إذا لم يقم شخص آخر بإصلاحه، فسأحاول العودة لاحقًا والعمل على طلب سحب. :slightly_smiling_face:

3 إعجابات