نقل قائمة بريدية إلى Discourse (mbox، Listserv، Google Groups، إلخ)

تمكنت من إجراء عملية Google Takeout لمجموعات Google الخاصة بي، ثم قمت برفع ملفات .mbox واستيرادها.

كانت هذه الخطوات مفيدة لربط data/folder بفئة موجودة، لكن يجب تنفيذ ذلك داخل حاوية import، وليس حاوية app كما هو موضح في هذا التقرير:

./launcher enter import
rails c

# استخدم معرف الفئة الظاهر في عنوان URL، على سبيل المثال
# يكون 16 عندما يبدو مسار الفئة كالتالي: /c/soccer/16
category = Category.find(16)

# استخدم اسم المجلد الذي تُخزَّن فيه ملفات mbox. على سبيل المثال،
# عندما تكون الملفات مخزنة في import/data/foo، يجب استخدام "foo" كاسم للمجلد.
category.custom_fields["import_id"] = "soccer"
category.save!

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

هل توجد أي طريقة لجعل النظام يربط المستخدمين الحاليين برسائلهم المستوردة؟

لقد قمت حاليًا بإلغاء كل شيء عن طريق الاستعادة من نسخة احتياطية حديثة. أنا مستعد للمحاولة مرة أخرى مع بعض التوجيهات للتعامل مع مستخدمي Discourse الحاليين ورسائلهم المستوردة.

تحديث:

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

User.where("id > 0").find_each do |u|
  email = u.email.downcase
  unless u.custom_fields["import_id"].present?
    u.custom_fields["import_id"] = email
    u.save_custom_fields
  end
end