Erro 404 na preferência do perfil/ perfil do administrador não funciona

Tenho este problema há um mês; mas tentei várias vezes atualizar; migrar o banco de dados para um novo; etc… sem conserto.

Estava no usuário administrador; tentei migrar os dados do administrador para um novo; mesmo problema.. não consigo abrir as preferências ou o perfil e recebo 404;

Vejo o mesmo problema, mas ninguém explica como consertar e é bem antigo, de 3 anos atrás.

mesmo problema e eles mencionam que foi corrigido, mas é muito antigo e ninguém explica como consertar.

O que isso significa?

Você está usando algum plugin?

Você vê algo em /logs?

2 curtidas

Eu desativei todos os plugins e restaurei o banco de dados com o mesmo erro, não tenho ideia… e é por isso que estou escrevendo aqui.

Você precisará nos dar alguma informação para trabalhar.

2 curtidas

logs mostram isto

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
Mensagem

NoMethodError (método indefinido `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.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'

Ambiente

HTTP HOSTS: site.com

Você já tentou desabilitar os selos e ver se isso resolve a situação?

Sim, eu tento, mas o mesmo problema

Este parece ser o mesmo problema que você postou anteriormente. Vou vincular o outro tópico aqui caso haja mais informações nele que possam ajudar as pessoas a descobrir o que deu errado:

Não tenho certeza se estou entendendo 100%. O problema é que você não consegue acessar a tela de administração?

Sim, mencionei antes que tive esse problema há um mês e tentei várias maneiras de consertá-lo, mas tudo falhou.

A tela de administrador eu consigo ver, mas não consigo abrir o perfil de administrador ou as preferências, recebo um erro 404.

E você acha que isso pode ser por causa de alguns emblemas personalizados? Outros usuários com os emblemas personalizados são afetados? Se sim, você poderia revogar os emblemas personalizados ou excluí-los completamente?

Não sei como revogá-los ou excluí-los… Existe algum guia para isso para eu tentar?

Você pode editar/revogar emblemas de um usuário em sua página de administração/usuário: (se você puder acessá-la)

Ou você pode excluir um emblema personalizado na seção Emblemas da área de administração:

[SeuSite]/admin/badges

Em preferência ou perfil não consigo acessar (erro 404); e na seção de badges (erro 500);

Código de erro: erro 500

Talvez eu possa executar a restauração do badge básico pela linha de comando do banco de dados?

Mensagem

Uncaught [object Object]
Url: https://site.com/assets/vendor-3c473d73e5222f7710764282fcc17d73997b7fbd37e0c12afc050b80693ceee2.js
Linha: 36
Coluna: 180628
Localização da Janela: https://site.com/admin/badges

Backtrace



Ambiente

HTTP HOSTS: site.com

Não acho que haja um ‘reset’ fácil que você possa fazer para os Emblemas, mesmo do console do Rails.

Até onde você chegou com a consulta do Explorador de Dados recomendada no outro tópico? Você conseguiu rastrear qual imagem de emblema está causando o problema?

E eu não, se possível você pode dar uma olhada?

Após um pouco de experimentação, consigo replicar essa falha (ou possivelmente algo semelhante). Tentei usar o console para inserir um valor “null” em image_upload_id na tabela Badge, e ele o preencheu com 0 em vez disso. Isso travou meu site de teste de uma forma muito semelhante à que você descreveu.

Eu o “consertou” alterando todos os image_upload_id para ‘1’. Isso me permitiu voltar ao meu perfil e à seção Badges, mas agora tenho que trocar manualmente todos os badges para apenas ícone, etc.

Para verificar se o seu problema é semelhante, você pode acessar seu explorador de dados e criar uma nova consulta e colar isso (e executar):

Select name, image_upload_id
FROM badges b
Order By id desc

Também descobri que ele quer ‘nil’ e não ‘null’ no console para funcionar corretamente. :slightly_smiling_face:

Isso consertou os meus quebrados sem precisar passar por todos manualmente:

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

Sem saber exatamente qual é o problema com o seu, não posso dizer com certeza que isso consertará o seu da mesma forma - embora talvez um ‘alterar tudo para nil’ possa funcionar para você?

1 curtida

Olá @jammydodger,

Bem, isso me mostra algo assim

Vejo que a maioria dos emblemas são NULL, exceto 3 emblemas que têm o valor 17

e depois de verificar o perfil novamente; o erro ainda persiste nos “logs”;

Mensagem

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

Ambiente

HTTP HOSTS: site.com

Devo selecionar algo mais ou você prefere dar uma olhada você mesmo?

1 curtida

A consulta do explorador de dados não corrigirá o problema, mas as informações que ele forneceu podem ajudar. :+1:

Se você se sente confortável usando o console do rails, pode tentar o seguinte para redefinir esses 17 para nulo: (não se esqueça de fazer um backup, por via das dúvidas)

Navegue até o console do rails:

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

Cole isto:

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

E esperamos que isso desbloqueie a seção de Emblemas e o perfil para que você possa começar de novo. :+1::crossed_fingers:

2 curtidas

Conhecimento não tem valor a menos que você o use e o compartilhe, mano! Agradeço seu tempo, irmão.. corrigido!

2 curtidas