عند استيراد فئة من ملف، هل هناك أي طريقة لضمان بقاء المواضيع التي تم تحميلها خاصة؟ لقد أجريت استيرادًا تجريبيًا في بيئة تطوير محلية لـ Discourse وتمت إعادة تعيين إعدادات أمان الفئة، بحيث يمكن رؤية هذه المواضيع الجديدة من قبل الجميع.
أعلم أنه يمكنني استخدام import:file[category-export.json] ثم تغيير أمان الفئة فورًا لتكون قابلة للعرض فقط من قبل المستخدمين في مجموعة معينة، لكنني قلق بشأن ما يحدث في الفترة الفاصلة - أولاً، قد تكون هناك فترة قصيرة يمكن للجميع فيها رؤية هذا المحتوى، وثانياً، قد يتم إرسال إشعارات البريد الإلكتروني (أو جدولتها) للجميع، حتى بعد تغيير الإعدادات.
نظرًا لأن مهمة import:file في rake تأخذ وسيطًا واحدًا فقط (اسم الملف)، لا يبدو أن هناك أي طريقة لتعيين “الفئة الوجهة” التي أرغب في تخزين الاستيراد فيها.
لقد حاولت إنشاء الفئة أولاً، بنفس اسم الفئة والاسم المستعار، لكن هذا يفشل مع الخطأ:
فشل استيراد الفئة (المعرف = 5، الاسم = CATEGORY_NAME): فشل التحقق: اسم الفئة مأخوذ بالفعل، الاسم المستعار قيد الاستخدام بالفعل
تم استيراد موضوع الاختبار الوحيد الذي قمت بتضمينه في ملف .json هذا، ولكنه تم إنشاؤه في #uncategorized، وهو ما هو أسوأ من إنشائه في فئة مرئية بشكل علني.
لقد فكرت في أي طرق أخرى يمكنني القيام بذلك بشكل آمن ولكن ليس لدي أي أفكار جيدة في الوقت الحالي. أي أفكار من المجتمع؟
في الواقع، يبدو أن هذا كان مجرد غباء مني في المقام الأول.
السلوك الافتراضي لمهمة import:file (التي تستدعي ImportExport::Importer) هو نسخ الأذونات بالضبط من الفئة المصدر. لم أكتشف ذلك إلا من خلال مراجعة الكود المصدري.
وقد فعلت ذلك بالضبط. السبب في أن فئتي الوجهة لم يكن لديها الأذونات التي كنت آمل فيها هو أنني نسيت تعيين تلك الأذونات بشكل صحيح في المصدر! كنت أنقل فئة في منتدى خاص بالفعل (المنتدى بأكمله خاص لذلك كانت الفئة ترى/ترد/تنشئ للجميع هناك) إلى منتدى أكثر انفتاحًا (والتي احتاجت تلك المشاركات فيها إلى فئة آمنة - ترى/ترد/تنشئ للمسؤولين فقط في البداية).
أتفق مع ذلك - نظرًا لأن استيراد الفئة هو شيء لا يمكن القيام به إلا في البيئة الحية الفعلية، فقد يرغب المرء في أن تكون الأذونات افتراضية للمسؤولين فقط حتى يتم التحقق من الاستيراد ويتأكد الجميع من أنه على ما يرام. أفضل من إزعاج المستخدمين بإشعارات حول عمليات الاستيراد المجمعة.