No se puede encontrar la plantilla de nombre de usuario

Hola,

Tengo un problema extraño con el nombre de usuario. Mi panel utiliza RTL y un idioma único para las palabras clave en árabe.

El nombre de usuario está configurado en palabras en inglés, pero cuando reviso los registros, me muestra que la plantilla del perfil de usuario no se puede encontrar… porque está en palabras clave en árabe.

Cuando reviso el nombre de usuario para cambiarlo, está configurado en inglés, pero en el error me muestra la palabra clave en árabe.

Aquí está el error completo.

Mensaje

ActionView::Template::Error (No se encontraron rutas para {:action=>"show", :controller=>"users", :username=>"دعم_المجتمع"}, posibles restricciones no coincidentes: [:username]
¿Te refieres a?  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/middleware/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

Creo que debemos solucionar esto desde dentro del contenedor, ya que en el panel de administración he intentado todo pero no funciona.

¿Alguna sugerencia?

¿Alguna sugerencia sobre cómo aplicar caracteres únicos en Discourse? Para que podamos usar nombres de usuario en árabe o con codificación UTF-8 única.

Me temo que no tengo experiencia con nombres de usuario en árabe, pero ¿es este un caso en el que los nombres de usuario unicode podrían ayudar?

Correcto, ya está revisado pero sigue el problema; ahora el error cambió;

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

Parece que el problema está en la sección de insignias de mi foro; pero estoy intentando ejecutar este comando en el contenedor, pero no sé cómo;

Discourse.system_user.create_user_profile

Este comando solucionaría el problema de las insignias; pero agradecería si alguien pudiera explicar cómo ejecutar este comando o dónde.

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

Gracias.

¿Por qué crees eso? No creo que el método create_user_profile esté diseñado para ejecutarse manualmente, lo ejecuta Discourse después de que se crea un usuario discourse/app/models/user.rb at main · discourse/discourse · GitHub
Por eso obtienes el error duplicate key value, porque estás intentando crear perfiles de usuario que ya existen.

Intenté replicar este error creando una cuenta de usuario con el nombre de usuario دعم_المجتمع y también lo probé con una cuenta con un nombre de usuario en inglés, ambos tenían el idioma de la interfaz configurado en árabe, y funciona bien.

No creo que este problema esté relacionado con el idioma o las plantillas, sino con las insignias que faltan imágenes, como señalaste aquí Badge image missing issue

Tienes razón; de todos modos, esta es una copia de seguridad y la restauro y funciona bien… el problema es solo con las imágenes de las insignias; y trato de ejecutar los comandos

rake uploads:clean_up
rake posts:rebake

pero sigue siendo el mismo problema…

[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 me gusta