Erro de cadastro: PG::UniqueViolation (ERRO: violação de chave duplicada viola restrição única

Olá! Nenhuma alteração foi feita no site.

Novos usuários começaram a relatar este erro:

PG::UniqueViolation (ERROR: duplicate key value violates unique constraint "idx_category_users_category_id_user_id" DETAIL: Key (category_id, user_id)=(55, 1691) already exists. ) app/models/user.rb

Em detalhes:

Mensagem (2 cópias relatadas)

PG::UniqueViolation (ERROR:  duplicate key value violates unique constraint "idx_category_users_category_id_user_id"
DETAIL:  Key (category_id, user_id)=(55, 1691) já existe.
)
app/models/user.rb:1499:in `set_default_categories_preferences'
app/controllers/users_controller.rb:629:in `create'
app/controllers/application_controller.rb:358:in `block in with_resolved_locale'
app/controllers/application_controller.rb:358:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68: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:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

Backtrace

rack-mini-profiler (2.2.0) lib/patches/db/pg.rb:110:in `exec'
rack-mini-profiler (2.2.0) lib/patches/db/pg.rb:110:in `async_exec'
mini_sql (0.3) lib/mini_sql/postgres/connection.rb:201:in `run'
mini_sql (0.3) lib/mini_sql/postgres/connection.rb:173:in `exec'
app/models/user.rb:1499:in `set_default_categories_preferences'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:428:in `block in make_lambda'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:238:in `block in halting_and_conditional'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `block in invoke_after'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `each'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `invoke_after'

Env
rack-mini-profiler (2.2.0) lib/patches/db/pg.rb:110:in `exec'

rack-mini-profiler (2.2.0) lib/patches/db/pg.rb:110:in `async_exec'

mini_sql (0.3) lib/mini_sql/postgres/connection.rb:201:in `run'

mini_sql (0.3) lib/mini_sql/postgres/connection.rb:173:in `exec'

app/models/user.rb:1499:in `set_default_categories_preferences'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:428:in `block in make_lambda'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:238:in `block in halting_and_conditional'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `block in invoke_after'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `each'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:517:in `invoke_after'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:136:in `run_callbacks'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:825:in `_run_create_callbacks'

activerecord (6.0.3.3) lib/active_record/callbacks.rb:331:in `_create_record'

activerecord (6.0.3.3) lib/active_record/timestamp.rb:110:in `_create_record'

activerecord (6.0.3.3) lib/active_record/persistence.rb:905:in `create_or_update'

activerecord (6.0.3.3) lib/active_record/callbacks.rb:327:in `block in create_or_update'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:135:in `run_callbacks'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:825:in `_run_save_callbacks'

activerecord (6.0.3.3) lib/active_record/callbacks.rb:327:in `create_or_update'

activerecord (6.0.3.3) lib/active_record/timestamp.rb:128:in `create_or_update'

activerecord (6.0.3.3) lib/active_record/persistence.rb:470:in `save'

activerecord (6.0.3.3) lib/active_record/validations.rb:47:in `save'

activerecord (6.0.3.3) lib/active_record/transactions.rb:314:in `block in save'

activerecord (6.0.3.3) lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'

activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'

activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'

activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'

activerecord (6.0.3.3) lib/active_record/transactions.rb:212:in `transaction'

activerecord (6.0.3.3) lib/active_record/transactions.rb:366:in `with_transaction_returning_status'

activerecord (6.0.3.3) lib/active_record/transactions.rb:314:in `save'

activerecord (6.0.3.3) lib/active_record/suppressor.rb:44:in `save'

app/controllers/users_controller.rb:629:in `create'

actionpack (6.0.3.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack (6.0.3.3) lib/abstract_controller/base.rb:195:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/rendering.rb:30:in `process_action'

actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:42:in `block in process_action'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:112:in `block in run_callbacks'

app/controllers/application_controller.rb:358:in `block in with_resolved_locale'

i18n (1.8.5) lib/i18n.rb:313:in `with_locale'

app/controllers/application_controller.rb:358:in `with_resolved_locale'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:121:in `block in run_callbacks'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:139:in `run_callbacks'

actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:41:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/rescue.rb:22:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'

activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `block in instrument'

activesupport (6.0.3.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'

activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `instrument'

actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:32:in `process_action'

actionpack (6.0.3.3) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'

activerecord (6.0.3.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'

actionpack (6.0.3.3) lib/abstract_controller/base.rb:136:in `process'

actionview (6.0.3.3) lib/action_view/rendering.rb:39:in `process'

rack-mini-profiler (2.2.0) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'

actionpack (6.0.3.3) lib/action_controller/metal.rb:190:in `dispatch'

actionpack (6.0.3.3) lib/action_controller/metal.rb:254:in `dispatch'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:33:in `serve'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:49:in `block in serve'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `each'

actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `serve'

actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:834:in `call'

lib/middleware/omniauth_bypass_middleware.rb:68:in `call'

rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'

rack (2.2.3) lib/rack/conditional_get.rb:40:in `call'

rack (2.2.3) lib/rack/head.rb:12:in `call'

lib/content_security_policy/middleware.rb:12:in `call'

lib/middleware/anonymous_cache.rb:354:in `call'

rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'

rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/cookies.rb:648:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'

activesupport (6.0.3.3) lib/active_support/callbacks.rb:101:in `run_callbacks'

actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'

logster (2.9.4) lib/logster/middleware/reporter.rb:43:in `call'

railties (6.0.3.3) lib/rails/rack/logger.rb:37:in `call_app'

railties (6.0.3.3) lib/rails/rack/logger.rb:28:in `call'

config/initializers/100-quiet_logger.rb:23:in `call'

config/initializers/100-silence_logger.rb:31:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'

lib/middleware/enforce_hostname.rb:22:in `call'

rack (2.2.3) lib/rack/method_override.rb:24:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/executor.rb:14:in `call'

rack (2.2.3) lib/rack/sendfile.rb:110:in `call'

actionpack (6.0.3.3) lib/action_dispatch/middleware/host_authorization.rb:76:in `call'

rack-mini-profiler (2.2.0) lib/mini_profiler/profiler.rb:246:in `call'

message_bus (3.3.4) lib/message_bus/rack/middleware.rb:61:in `call'

lib/middleware/request_tracker.rb:176:in `call'

railties (6.0.3.3) lib/rails/engine.rb:527:in `call'

railties (6.0.3.3) lib/rails/railtie.rb:190:in `public_send'

railties (6.0.3.3) lib/rails/railtie.rb:190:in `method_missing'

rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'

rack (2.2.3) lib/rack/urlmap.rb:58:in `each'

rack (2.2.3) lib/rack/urlmap.rb:58:in `call'

unicorn (5.7.0) lib/unicorn/http_server.rb:632:in `process_client'

unicorn (5.7.0) lib/unicorn/http_server.rb:728:in `worker_loop'

unicorn (5.7.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers'

unicorn (5.7.0) lib/unicorn/http_server.rb:144:in `start'

unicorn (5.7.0) bin/unicorn:128:in `<top (required)>'

vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `load'

vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `<main>'

Estou na versão mais recente do Discourse.

Por favor, ajude-me a corrigir isso.

Parece que seus grupos de acompanhamento automático têm um duplicado. Não tenho certeza de como isso é possível, mas você poderia tentar redefinir a configuração do site para acompanhamento automático?

Prezado Sam, você é ótimo!

Eu mesmo causei esse problema. Defini uma categoria de acompanhamento padrão para usuários com Trust_level_0. Isso gerou um problema e as inscrições falharam. Então, excluí a categoria acompanhada para esse grupo e agora as inscrições estão funcionando.

Fiz o mesmo e estou enfrentando o mesmo problema. Novos registros não estão sendo possíveis.

Mas não estamos usando o recurso da maneira correta? Quero que novos usuários acompanhem instantaneamente uma determinada categoria.
Como posso realizar isso?

Não, não descobri como fazer isso. Talvez seja possível com grupos? Adicionar novos usuários automaticamente a um grupo específico por padrão e configurar esse grupo para acompanhar uma determinada tag ou categoria.

É estranho para mim que não possamos fazer isso com níveis de confiança.

Me avise se conseguir fazer isso com um grupo.

O problema foi corrigido pelos commits abaixo