dr3adx
(Dr3adx)
18 مايو 2020، 4:08ص
1
أحاول استيراد بيانات من منتديات ipb الخاصة بي، وعند تشغيل السكربت ipboard3 يظهر لي الخطأ التالي:
script/import_scripts/ipboard3.rb:375:in `clean_up': undefined method `encode!' for nil:NilClass (NoMethodError)
root@forum:/var/www/discourse# `clean_up': undefined method `encode!'
لماذا يظهر لي “undefined method ‘encode!’”؟
pfaffman
(Jay Pfaffman)
18 مايو 2020، 5:23م
2
لأنها تُستدعى بينما المتغير raw يساوي nil.
لذا، ستحتاج إلى تحديد الدالة التي تستدعيها ولماذا لا يتم جلب البيانات الخاصة بـ raw للمنشور.
أعتقد أن السطر التالي هو السبب:
bio_raw: clean_up(u["pp_about_me"]),
إذا كان الأمر كذلك، فربما الحل هو تعديل الدالة clean_up لتُرجع nil في حال عدم وجود بيانات.
dr3adx
(Dr3adx)
19 مايو 2020، 12:54ص
4
pfaffman:
لأنه يتم استدعاؤه بينما raw تساوي nil.
لذا ستحتاج إلى معرفة الدالة التي تستدعيه ولماذا لا يتم استلام البيانات الخاصة بـ raw للمنشور.
تخميني هو أن السطر التالي هو السبب:
bio_raw: clean_up(u["pp_about_me"]),
إذا كان هذا هو الحال، فإن الحل قد يكون تعديل clean_up بحيث تعيد nil إذا لم تحصل على أي بيانات.
هل هذا جيد؟
if raw.to_i.zero?
return
end
لقد جربت هذا وتم استيراد جميع المستخدمين والمواضيع والمنشورات، لكن المنشورات لا تحتوي على نص (هي فارغة). هل لديك أي فكرة عن السبب؟ لا أعتقد أن إضافة “return nil” ستحدث فرقًا كبيرًا، ما رأيك؟
أيضًا، تم استيراد جميع الرسائل الشخصية لكنها فارغة أيضًا.
pfaffman
(Jay Pfaffman)
19 مايو 2020، 2:07ص
5
استعلام قاعدة البيانات خاطئ لسبب ما. فهو لا يجلب بيانات محتوى المنشور.
riking
(Kane York)
19 مايو 2020، 6:55ص
6
لا، هذا سيُفعّل كثيرًا جدًا. جرّب هذا:
أرجع إذا كان raw nil
dr3adx
(Dr3adx)
19 مايو 2020، 5:01م
7
هذا غريب لأنني أستخدم IPB3 وقد تحققت من أسماء الأعمدة وهي متطابقة
pfaffman
(Jay Pfaffman)
19 مايو 2020، 5:36م
8
إذا قمت بتنفيذ الاستعلامات التي يقوم بها السكربت، هل توفر البيانات التي تتوقعها؟
هل قمت بتغيير كودك:
if raw.to_i.zero?
إلى شيء مثل:
if raw.length == 0
فإن "randome text".to_i.zero? ستعطي دائمًا قيمة صحيحة.