Le modèle de nom d'utilisateur est introuvable

Bonjour,

J’ai un problème étrange avec le nom d’utilisateur, mon tableau de bord utilise le RTL et une langue unique pour les mots-clés arabes…

Le nom d’utilisateur est défini sur des mots anglais, mais lorsque je vérifie les journaux, il m’indique que le modèle de profil utilisateur est introuvable… Parce qu’il est en mots-clés arabes…

Lorsque je vérifie le nom d’utilisateur pour le modifier, il est défini sur l’anglais, mais dans l’erreur, il m’indique le mot-clé arabe…

Voici l’erreur complète.

Message

ActionView::Template::Error (No route matches {:action=>"show", :controller=>"users", :username=>"دعم_المجتمع"}, possible unmatched constraints: [:username]
Did you mean?  user_url
               users_url
               users_path
               user_badge_url)
app/views/about/index.html.erb:17
app/views/about/index.html.erb:15
app/controllers/about_controller.rb:16:in `block (2 levels) in index'
app/controllers/about_controller.rb:14:in `index'
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:354:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'

Backtrace

actionpack (6.1.4.1) lib/action_dispatch/journey/formatter.rb:44:in `path'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:823:in `url_for'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:270:in `call'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:326:in `block in define_url_helper'
app/views/about/index.html.erb:17
activerecord (6.1.4.1) lib/active_record/relation/delegation.rb:88:in `each'
activerecord (6.1.4.1) lib/active_record/relation/delegation.rb:88:in `each'
app/views/about/index.html.erb:15
actionview (6.1.4.1) lib/action_view/base.rb:247:in `public_send'
actionview (6.1.4.1) lib/action_view/base.rb:247:in `_run'

Env

HTTP HOSTS: forum.com

Je pense que nous devons résoudre ce problème depuis l’intérieur du conteneur car dans le panneau d’administration, j’ai tout essayé mais cela ne fonctionne pas.

Des suggestions ?

Des suggestions sur la façon d’appliquer des caractères uniques sur Discourse ? afin que nous puissions utiliser des noms d’utilisateur en langue arabe, ou avec un encodage UTF-8 unique ?

Je crains de ne pas avoir d’expérience avec les noms d’utilisateur arabes, mais est-ce un cas où les noms d'utilisateur unicode pourraient aider ?

Correct, c’est déjà vérifié mais toujours le problème ; mais maintenant l’erreur a changé ;

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/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/enforce_hostname.rb:23: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

Il semble que le problème se situe dans la section des badges de mon forum ; mais j’essaie d’exécuter cette commande dans un conteneur mais je ne sais pas comment ;

Discourse.system_user.create_user_profile

Cette commande résoudrait le problème des badges ; mais j’apprécierais si quelqu’un pouvait expliquer comment exécuter cette commande ? Ou où ?

[1] pry(main)> Discourse.system_user.create_user_profile
ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "user_profiles_pkey"
DETAIL:  Key (user_id)=(-1) already exists.

from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:69:in `exec_params'
Caused by PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "user_profiles_pkey"
DETAIL:  Key (user_id)=(-1) already exists.

from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:69:in `exec_params'

Merci.

Pourquoi pensez-vous cela ? Je ne pense pas que la méthode create_user_profile soit destinée à être exécutée manuellement, elle est exécutée par Discourse après la création d’un utilisateur discourse/app/models/user.rb at main · discourse/discourse · GitHub
C’est pourquoi vous obtenez l’erreur duplicate key value, car vous essayez de créer des profils d’utilisateur qui existent déjà.

J’ai essayé de reproduire cette erreur en créant un compte utilisateur avec le nom d’utilisateur دعم_المجتمع et je l’ai également testé avec un compte avec un nom d’utilisateur anglais, les deux avaient la langue de l’interface définie sur arabe, et cela fonctionne bien.

Je ne pense pas que ce problème soit lié à la langue ou aux modèles anymore, mais aux badges qui manquent d’images, comme vous l’avez souligné ici Badge image missing issue

Vous avez raison ; de toute façon, c’est une sauvegarde et je l’ai restaurée et elle fonctionne bien… le problème ne concerne que les images de badges ; et j’essaie d’exécuter les commandes

rake uploads:clean_up
rake posts:rebake

mais le problème persiste…

[2] pry(main)> Discourse.system_user.create_user_profile
ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "user_profiles_pkey"
DETAIL:  Key (user_id)=(-1) already exists.

from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:69:in `exec_params'
Caused by PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "user_profiles_pkey"
DETAIL:  Key (user_id)=(-1) already exists.

from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:69:in `exec_params'
[3] pry(main)> 

1 « J'aime »