Préférence de profil erreur 404/ profil admin ne fonctionne pas

J’ai ce problème depuis un mois ; mais j’ai essayé plusieurs fois de mettre à niveau ; de migrer la base de données vers une nouvelle ; etc… sans succès.

C’était dans l’utilisateur admin ; j’ai essayé de migrer les données de l’admin vers une nouvelle ; même problème… je ne peux pas ouvrir les préférences ou le profil et j’obtiens une 404 ;

Je vois le même problème mais personne n’explique comment le résoudre et c’est assez ancien depuis 3 ans.

même problème et ils mentionnent que c’est résolu mais trop ancien et personne n’explique comment résoudre.

Qu’est-ce que cela signifie ?

Utilisez-vous des plugins ?

Voyez-vous quelque chose dans /logs ?

2 « J'aime »

J’ai désactivé tous les plugins et restauré la base de données avec la même erreur, je n’ai aucune idée… et c’est pourquoi j’écris ici.

Il faudra nous donner quelques informations pour travailler.

2 « J'aime »

logs affiche ceci

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
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/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'

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

Avez-vous essayé de désactiver les badges pour voir si cela résout la situation ?

Oui, j’essaie mais le même problème persiste

Cela semble être le même problème que celui que vous avez signalé précédemment. Je vais lier l’autre sujet ici au cas où il y aurait plus d’informations qui pourraient aider à comprendre ce qui s’est mal passé :

Je ne suis pas sûr de bien comprendre à 100%. Le problème est-il que vous ne pouvez pas accéder à l’écran d’administration ?

Oui, j’ai mentionné précédemment que j’avais eu ce problème il y a un mois et j’ai essayé de nombreuses façons de le résoudre, mais tout a échoué.

L’écran d’administration est visible, mais je ne peux pas ouvrir le profil d’administrateur ni les préférences, cela me donne une erreur 404.

Et pensez-vous que cela pourrait être dû à des badges personnalisés ? D’autres utilisateurs avec des badges personnalisés sont-ils affectés ? Si oui, pourriez-vous révoquer les badges personnalisés, ou les supprimer entièrement ?

Je ne sais pas comment les révoquer ou les supprimer… Y a-t-il un guide pour essayer ?

Vous pouvez modifier/révoquer les badges d’un utilisateur depuis sa page d’administration/utilisateur : (si vous y avez accès)

Ou vous pouvez supprimer un badge personnalisé depuis la section Badges de la zone d’administration :

[YourSite]/admin/badges

En préférence ou profil, je ne peux pas accéder (erreur 404) ; et dans la section des badges (erreur 500) ;

Code d'erreur : erreur 500

Peut-être puis-je effectuer une restauration du badge de base à partir de la ligne de commande de la base de données ?

Message

Non intercepté [object Object]
Url : https://site.com/assets/vendor-3c473d73e5222f7710764282fcc17d73997b7fbd37e0c12afc050b80693ceee2.js
Ligne : 36
Colonne : 180628
Emplacement de la fenêtre : https://site.com/admin/badges

Trace

Env

HÔTES HTTP : site.com

Je ne pense pas qu’il y ait une réinitialisation facile que vous puissiez faire pour les badges, même depuis la console Rails.

Jusqu’où êtes-vous allé avec la requête Data Explorer recommandée dans l’autre sujet ? Avez-vous réussi à identifier quelle image de badge pose problème ?

Non, je ne l’ai pas fait, si possible, pouvez-vous jeter un œil ?

Après quelques expérimentations, je peux reproduire ce bug (ou quelque chose de similaire). J’ai essayé d’utiliser la console pour insérer une valeur « null » dans image_upload_id dans la table Badge, et cela l’a remplie avec 0 à la place. Cela a bloqué mon site de test d’une manière très similaire à ce que vous avez décrit.

Je l’ai « réparé » en changeant tous les image_upload_id en « 1 ». Cela m’a permis de revenir sur mon profil et dans la section Badges, mais je dois maintenant échanger manuellement tous les badges pour qu’ils n’aient que l’icône, etc.

Pour vérifier si votre problème est similaire, pouvez-vous accéder à votre explorateur de données et créer une nouvelle requête, puis coller ceci (et l’exécuter) :

Select name, image_upload_id
FROM badges b
Order By id desc

J’ai également compris qu’il faut « nil » et non « null » dans la console pour que cela fonctionne correctement. :slightly_smiling_face:

Cela a réparé mes éléments cassés sans avoir à passer par tous manuellement :

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

Sans connaître exactement le problème qui vous affecte, je ne peux pas dire avec certitude que cela résoudra votre problème de la même manière - bien qu’un « tout changer en nil » pourrait fonctionner pour vous ?

1 « J'aime »

Salut @jammydodger,

Eh bien, cela me montre quelque chose comme ceci

Je vois que la plupart des badges sont NULL sauf 3 badges qui ont la valeur 17

et après avoir vérifié à nouveau le profil ; l’erreur est toujours présente dans les « logs » ;

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

Devrais-je sélectionner quelque chose d’autre ou préférez-vous jeter un œil vous-même ?

1 « J'aime »

La requête de l’explorateur de données ne résoudra pas le problème, mais les informations qu’elle a fournies pourraient aider. :+1:

Si vous êtes à l’aise avec la console Rails, vous pourriez essayer ce qui suit pour réinitialiser ces 17 à null : (n’oubliez pas de faire une sauvegarde au cas où)

Accédez à la console Rails :

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

Collez ceci :

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

Et espérons que cela débloquera la section Badge et le profil afin que vous puissiez recommencer. :+1::crossed_fingers:

2 « J'aime »

La connaissance n’a de valeur que si vous l’utilisez et la partagez, mon pote ! J’apprécie votre temps, mon frère… c’est réglé !

2 « J'aime »