استيراد حقل ملف تعريف مستخدم مخصص من برنامج منتدى قديم

أبحث عن إضافة حقل مخصص إلى سكريبت الاستيراد. الحقل عبارة قائمة منسدلة.

وقد صادفت هذا المنشور، الذي وثّق كيفية إنشاء الحقل في البداية كجزء من عملية الاستيراد:

نجح الأمر وتم إنشاء الحقل بشكل صحيح مع خيارات القائمة المنسدلة المناسبة.

لكن الكود الذي أستخدمه لاستيراد قيمة هذا الحقل لا يعمل. إليك ما أستخدمه:

  post_create_action: proc do |newuser|
    if user["legacy_custom_field"].is_a?(String)
      newuser.custom_fields = {"user_field_#{@legacy_field.id}" => user["legacy_custom_field"]}
    end
  end

الحقل الذي أستورده هو نص، لذا يجب أن يعمل الكود. ومع ذلك، عند تشغيل الاستيراد، لا يتم استيراد أي شيء لهذا الحقل.

قيمة user[“legacy_custom_field”] في هذا المثال مطابقة للخيارات التي تم إنشاؤها لهذا الحقل، لكنني لا أتحقق من صحة البيانات المستوردة مقابل خيارات القائمة المنسدلة. هل يجب أن أفعل ذلك، أو ربما أضيف البيانات بشكل مختلف لأنها تختار من قائمة منسدلة؟ عندما استكشفت جدول user_custom_fields، يبدو أن هذا النص يُخزَّن كسلسلة نصية بسيطة على أي حال.

ما الذي أغفله؟ شكراً مقدماً لأي شخص قادر على المساعدة! :+1:

غير متأكد مما يحدث في كودك. قد يكون من المفيد الاطلاع على مستورد Ning، حيث يدعم الحقول المخصصة. أقترح إضافة puts بعد جملة if لمعرفة ما إذا كانت تُنفذ أم لا.

قد تحتاج إلى استدعاء newuser.save!، لكنني لا أعتقد أن ذلك ضروريًا.

إعجابَين (2)

كان الأمر بسيطًا مثل إضافة newuser.save! بعد الكود الموجود.

شكرًا على النصيحة! يعمل الآن بشكل ممتاز.

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

@pfaffman، هذا غريب حقًا. هل واجهتَ من قبل مشاكل مع newuser.save! حيث يؤدي استخدامه مبكرًا جدًا إلى تعطيل أقسام أخرى من نص الاستيراد؟ هل يؤدي ذلك إلى إنهاء عملية ما تحتاج إلى إعادة تهيئة لكي يعمل بقية النص؟

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

هل يمكن أن يكون لهذا أي علاقة باستخدام newuser.save! بدلاً من newuser.save بدون علامة التعجب “!” في النهاية؟ عندما أنهي عدة كتل من الكود بـ newuser.save!، لاحظت أن الكتلة الأولى فقط هي التي يتم حفظها فعليًا.

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