خطأ 404 في تفضيلات الملف الشخصي/ الملف الشخصي للمسؤول لا يعمل

لدي هذه المشكلة منذ شهر؛ لكنني حاولت الترقية عدة مرات؛ ترحيل قاعدة البيانات إلى قاعدة بيانات جديدة؛ إلخ… دون جدوى.

كان الأمر في مستخدم مسؤول؛ حاولت ترحيل بيانات المسؤول إلى مستخدم جديد؛ نفس المشكلة.. لا يمكنني فتح التفضيلات أو الملف الشخصي وأحصل على 404؛

أرى نفس المشكلة ولكن لا أحد يشرح كيفية الإصلاح وهي قديمة جدًا منذ 3 سنوات.

نفس المشكلة وهم يذكرون أنها تم إصلاحها ولكنها قديمة جدًا ولا أحد يشرح كيفية الإصلاح.

ماذا يعني هذا؟

هل تستخدم أي إضافات؟

هل ترى أي شيء في /logs؟

إعجابَين (2)

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

ستحتاج إلى تزويدنا ببعض المعلومات للعمل بها.

إعجابَين (2)

تظهر السجلات هذا

Job exception: getaddrinfo: No address associated with hostname
2:11 am
NoMethodError (undefined method `url' for nil:NilClass) app/models/badge.rb:306:in `image_url' (eval):10:in `_fast_attributes' lib/freedom_patches/ams_include_without_root.rb:54:in `include!' lib/free
رسالة

NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
app/controllers/application_controller.rb:510:in `render_json_dump'
app/controllers/users_controller.rb:97:in `block (2 levels) in show'
app/controllers/users_controller.rb:89:in `show'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/request_tracker.rb:198:in `call'

تتبع المكدس

app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:448:in `block in merge_association'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `each'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `merge_association'

بيئة التشغيل

HTTP HOSTS: site.com

هل حاولت تعطيل الشارات ومعرفة ما إذا كان ذلك يحل الموقف؟

نعم، لقد حاولت ولكن نفس المشكلة

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

لست متأكدًا مما إذا كنت أفهم هذا بنسبة 100٪. هل المشكلة هي أنك لا تستطيع الوصول إلى شاشة المسؤول؟

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

يمكنني رؤية شاشة المسؤول ولكن لا يمكنني فتح ملف تعريف المسؤول أو التفضيلات، إنها تعطيني خطأ 404.

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

لا أعرف كيف ألغيها أو أحذفها… هل هناك أي دليل لذلك لأجربه؟

يمكنك تعديل/إلغاء شارات المستخدم من صفحة المستخدم/المسؤول الخاصة به: (إذا كان بإمكانك الوصول إلى تلك الصفحة)

أو يمكنك حذف شارة مخصصة من قسم الشارات في منطقة المسؤول:

[YourSite]/admin/badges

في التفضيلات أو الملف الشخصي لا يمكنني الوصول (خطأ 404)؛ وفي قسم الشارات (خطأ 500)؛

رمز الخطأ: خطأ 500

ربما يمكنني استعادة الشارة الأساسية من سطر أوامر قاعدة البيانات؟

رسالة

Uncaught [object Object]
Url: https://site.com/assets/vendor-3c473d73e5222f7710764282fcc17d73997b7fbd37e0c12afc050b80693ceee2.js
Line: 36
Column: 180628
Window Location: https://site.com/admin/badges

Backtrace



Env

HTTP HOSTS: site.com

لا أعتقد أن هناك “إعادة تعيين” سهلة يمكنك القيام بها للشارات، حتى من وحدة تحكم Rails.

ما مدى تقدمك في استعلام مستكشف البيانات الموصى به في الموضوع الآخر؟ هل تمكنت من تتبع صورة الشارة التي تسبب المشكلة؟

لا، لم أفعل، إذا أمكن هل يمكنك إلقاء نظرة؟

بعد قليل من التجريب، يمكنني تكرار هذه المشكلة (أو ربما شيء مشابه). حاولت استخدام وحدة التحكم لإدراج قيمة “null” في image_upload_id في جدول Badge، وبدلاً من ذلك ملأتها بـ 0. هذا أدى إلى تعطل موقع الاختبار الخاص بي بطريقة مشابهة جدًا لما وصفته.

لقد “أصلحتها” عن طريق تغيير كل image_upload_id إلى ‘1’. هذا سمح لي بالعودة إلى ملفي الشخصي وقسم الشارات، ولكن الآن يجب علي تبديل جميع الشارات يدويًا إلى أيقونة فقط، إلخ.

للتحقق مما إذا كانت مشكلتك مشابهة، هل يمكنك الوصول إلى مستكشف البيانات الخاص بك وإنشاء استعلام جديد ولصق هذا فيه (وتشغيله):

Select name, image_upload_id
FROM badges b
Order By id desc

لقد اكتشفت أيضًا أنها تريد ‘nil’ وليس ‘null’ في وحدة التحكم لتعمل بشكل صحيح. :slightly_smiling_face:

هذا أصلح الشارات المعطلة لدي دون الحاجة إلى المرور عليها جميعًا يدويًا:

Badge.where('image_upload_id=0').find_each do |b|
b.image_upload_id = nil
b.save
end

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

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

مرحباً @jammydodger،

حسنًا، لقد عرض لي شيئًا كهذا

أرى أن معظم الشارات هي NULL باستثناء 3 شارات لها القيمة 17

وبعد أن تحققت من الملف الشخصي مرة أخرى؛ لا يزال الخطأ موجودًا في “السجلات”؛

Message

NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
app/controllers/application_controller.rb:510:in `render_json_dump'
app/controllers/users_controller.rb:97:in `block (2 levels) in show'
app/controllers/users_controller.rb:89:in `show'
app/controllers/users_controller.rb:103:in `show_card'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/request_tracker.rb:198:in `call'

Backtrace

app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:448:in `block in merge_association'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `each'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `merge_association'

Env

HTTP HOSTS: site.com

هل يجب أن أختار شيئًا آخر أم تفضل إلقاء نظرة بنفسك؟

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

استعلام مستكشف البيانات لن يصلح المشكلة، ولكن المعلومات التي قدمها قد تكون مفيدة. :+1:

إذا كنت مرتاحًا لاستخدام وحدة تحكم rails، يمكنك تجربة ما يلي لإعادة تعيين تلك الـ 17 إلى قيمة فارغة: (لا تنسَ أخذ نسخة احتياطية في حال حدوث أي شيء)

انتقل إلى وحدة تحكم rails:

cd /var/discourse
./launcher enter app
rails c

الصق هذا:

Badge.where('image_upload_id=17').find_each do |b|
b.image_upload_id = nil
b.save
end

ونأمل أن يؤدي ذلك إلى فتح قسم الشارات والملف الشخصي حتى تتمكن من البدء من جديد. :+1::crossed_fingers:

إعجابَين (2)

المعرفة لا قيمة لها ما لم تستخدمها وتشاركها يا صديقي! أقدر وقتك يا أخي.. تم الإصلاح!

إعجابَين (2)