كيف يمكنني فرز ردود الموضوع حسب التاريخ

مرحباً. لا أعرف ما إذا كان هذا ممكناً، وإذا كان كذلك، فقد بحثت كثيراً ولم أجد شيئاً عن هذا، ولكن أود فرز جميع الردود على جميع المواضيع في منتداي حسب تاريخ الإنشاء.

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

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

أنا أستخدم الإصدار 2.8.8.

لا تفعل ذلك. تريد استخدام برنامج استيراد. يمكنك الاطلاع على discourse/script/import_scripts at main · discourse/discourse · GitHub للحصول على أمثلة والبحث هنا للحصول على تعليمات لتشغيل برامج استيراد للمنتديات الأخرى.

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

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

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

ولكنني أعني، الهجرة عبر واجهة برمجة التطبيقات (API) كانت تعمل حتى الآن. أتساءل ما الهدف من إمكانية إرسال سمة created_at على نقطة النهاية لإنشاء مشاركات إذا لم يعرضها Discourse مرتبة بها على أي حال… ألا ينبغي أن يكون هذا طلب ميزة؟

نعم، في الواقع، هناك! لقد ربطت بأمثلة.

لو كان هذا صحيحًا، لما نشرت. :wink:

لا، لأن الطريقة لحل مشكلتك هي استخدام أحد العشرات من الأمثلة التي ربطت بها هي الطريقة لحل مشكلتك. أعدك بأن الأمر سيكون أسهل بكثير. لقد كتبت العديد من نصوص الاستيراد قبل أن أتعلم روبي حقًا.

حتى لو كنت ترغب في استخدام واجهة برمجة التطبيقات، لا يزال يتعين عليك إنشاء المشاركات بترتيب created_at. هناك طرق لفرزها في مكون إضافي (أو ربما مكون سمة؟)، لكنك حقًا لا تريد القيام بذلك.

يشير @JammyDodger إلى أن هناك مهمة rake

rake posts:reorder_posts

قد يحل هذا مشكلتك. إذا كنت تستورد بضع عشرات من المواضيع وبضع مئات من المشاركات، فقد تجرب ذلك.

إعجابَين (2)

حسناً. سأستمر في اتباع فكرتي، أردت فقط أن أعرف بخصوص السمة created_at في استدعاء POST عند إنشاء منشور - والتي تبدو عديمة الفائدة، إذا لم يكن من الممكن فرز المنشورات بواسطتها. شكراً على أي حال.

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

إليك مناقشة سابقة حول ذلك:

فيما يتعلق بكيفية أفضل معالجة الترحيل، أتفق مع جاي. من المحتمل أن يكون من الأفضل لك اتباع ما سبق. في حين أنه ليس واجهة برمجة تطبيقات ويب، فإن البرامج النصية الحالية تعتمد على “واجهة برمجة تطبيقات ترحيل” ذات مستوى أدنى مع أخذ ذلك في الاعتبار.

تم تصميم واجهة برمجة تطبيقات الويب إلى حد كبير كواجهة برمجة تطبيقات لتطبيق Discourse الأمامي. في حين أنه تم استخدامه بنجاح لمختلف عمليات التكامل، إلا أنه مُحسَّن لغرضه الأساسي.

إعجابَين (2)

إنه ليس عديم الفائدة، فهو يضبط تاريخ created_at كما هو معلن. فقط قم بفرز مشاركاتك حسب created_at قبل إنشائها.