Error 404 en preferencia de perfil/el perfil de administrador no funciona

He tenido este problema durante un mes; pero he intentado varias veces actualizar; migrar la base de datos a una nueva; etc… sin solución.

Estaba en un usuario administrador; intenté migrar los datos del administrador a uno nuevo; el mismo problema.. no puedo abrir las preferencias o el perfil y obtengo 404;

He visto el mismo problema pero nadie explica cómo solucionarlo y es bastante antiguo, de hace 3 años.

el mismo problema y mencionan que está solucionado pero es demasiado antiguo y nadie explica cómo solucionarlo.

¿Qué significa esto?

¿Estás usando algún plugin?

¿Ves algo en /logs?

2 Me gusta

Desactivé todos los plugins y restauré la base de datos con el mismo error, no tengo ni idea… y por eso escribo aquí.

Necesitarás darnos alguna información para trabajar.

2 Me gusta

los registros muestran esto

Excepción del trabajo: getaddrinfo: No hay dirección asociada con el nombre de host
2:11 am
NoMethodError (método no definido `url' para 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
Mensaje

NoMethodError (método no definido `url' para 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'

Rastreo

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'

Entorno

HTTP HOSTS: site.com

¿Has intentado desactivar las insignias y ver si eso resuelve la situación?

Sí, lo intento pero el mismo problema

Parece que este es el mismo problema que publicaste antes. Aquí enlazaré el otro tema en caso de que haya más información que pueda ayudar a la gente a averiguar qué salió mal:

No estoy seguro de estar entendiendo esto al 100%. ¿El problema es que no puedes acceder a la pantalla de administración?

Sí, mencioné antes que tuve este problema hace un mes e intenté muchas maneras de solucionarlo, pero todo falló.

Puedo ver la pantalla de administrador, pero no puedo abrir el perfil de administrador ni las preferencias, me da un error 404.

¿Y crees que esto podría deberse a algunas insignias personalizadas? ¿Están afectados otros usuarios con insignias personalizadas? Si es así, ¿podrías revocar las insignias personalizadas o eliminarlas por completo?

No sé cómo revocarlos o eliminarlos… ¿Hay alguna guía para intentarlo?

Puedes editar/revocar las insignias de un usuario desde su página de administrador/usuario: (si puedes acceder a ella)

O puedes eliminar una insignia personalizada desde la sección de Insignias del área de administración:

[TuSitio]/admin/badges

En preferencias o perfil no puedo acceder (error 404); y en la sección de insignias (error 500);

Código de error: error 500

¿Quizás puedo realizar una restauración básica de insignias desde la línea de comandos de la base de datos?

Mensaje

Uncaught [object Object]
Url: https://site.com/assets/vendor-3c473d73e5222f7710764282fcc17d73997b7fbd37e0c12afc050b80693ceee2.js
Línea: 36
Columna: 180628
Ubicación de la ventana: https://site.com/admin/badges

Backtrace


Entorno

HTTP HOSTS: site.com

No creo que haya un ‘restablecimiento’ fácil que puedas hacer para las insignias, ni siquiera desde la consola de rails.

¿Hasta dónde llegaste con la consulta del Explorador de Datos recomendada en el otro tema? ¿Has logrado localizar qué imagen de insignia está causando el problema?

No, no lo hice, ¿si es posible puedes echar un vistazo?

Después de experimentar un poco, puedo replicar este error (o posiblemente algo similar). Intenté usar la consola para insertar un valor “null” en el image_upload_id en la tabla Badge, y en su lugar lo llenó con 0. Eso bloqueó mi sitio de prueba de una manera muy similar a lo que has descrito.

Lo “arreglé” cambiando todos los image_upload_id a ‘1’. Eso me permitió volver a mi perfil y a la sección de Badges, pero ahora tengo que cambiar manualmente todas las insignias a solo icono, etc.

Para comprobar si el tuyo es un problema similar, ¿puedes acceder a tu explorador de datos y crear una nueva consulta y pegar esto (y ejecutarla)?:

Select name, image_upload_id
FROM badges b
Order By id desc

También he descubierto que quiere ‘nil’ y no ‘null’ en la consola para que funcione correctamente. :slightly_smiling_face:

Esto arregló los míos rotos sin necesidad de revisarlos todos manualmente:

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

Sin saber exactamente cuál es el problema con el tuyo, no puedo decir con seguridad que eso arreglará el tuyo de la misma manera, aunque tal vez un “cambiar todo a nil” podría funcionar para ti.

1 me gusta

Hola @jammydodger,

Bueno, me muestra algo como esto

Veo que la mayoría de las insignias son NULL, excepto 3 insignias que tienen el valor 17

y después de revisar el perfil de nuevo; el error sigue apareciendo en los “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

¿Debería seleccionar algo más o prefieres echar un vistazo tú mismo?

1 me gusta

La consulta del explorador de datos no solucionará el problema, pero la información que ha proporcionado puede ser útil. :+1:

Si te sientes cómodo usando la consola de Rails, podrías intentar lo siguiente para restablecer esos 17 a nulo: (no olvides hacer una copia de seguridad por si acaso)

Navega a la consola de Rails:

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

Pega esto:

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

Y con suerte, eso desbloqueará la sección de insignias y el perfil para que puedas empezar de nuevo. :+1::crossed_fingers:

2 Me gusta

¡El conocimiento no tiene valor a menos que lo uses y lo compartas, amigo! Agradezco tu tiempo, hermano… ¡arreglado!

2 Me gusta