Grupo de usuários 'categorias silenciadas' não atualiza notificações de categoria de membros

Sempre que atualizo as categorias silenciadas em um grupo de usuários e respondo sim a ‘atualizar usuários existentes?’, não parece atualizar. Por exemplo, veja este usuário, nº 8, que é membro do grupo nº 42, mas está faltando muitas linhas de category_user:

RESULTADOS SQL
  • Confirme a associação do usuário nº 8 ao grupo nº 42
SELECT gu.*, g.name
FROM group_users gu
JOIN groups g ON gu.group_id = g.id
WHERE user_id=8 and gu.group_id = 42;
  id  | group_id | user_id |         created_at         |         updated_at         | owner | notification_level |     first_unread_pm_at     |       name        
------+----------+---------+----------------------------+----------------------------+-------+--------------------+----------------------------+-------------------
 4207 |       42 |       8 | 2023-07-03 11:36:43.828233 | 2023-07-03 11:36:43.828233 | f     |                  3 | 2023-12-29 22:52:43.371588 | japanese-learners
  • Mostre os níveis de notificação atuais do usuário nº 8
SELECT cu.*, c.name, c.parent_category_id
FROM category_users cu
JOIN categories c ON cu.category_id = c.id
WHERE cu.user_id = 8;
  id   | category_id | user_id | notification_level | last_seen_at |     name      | parent_category_id 
-------+-------------+---------+--------------------+--------------+---------------+--------------------
 42289 |           1 |       8 |                  0 |              | Uncategorized |                   
  5981 |           5 |       8 |                  1 |              | Reading       |                  7
  7981 |           6 |       8 |                  1 |              | Watching      |                  7
   215 |           7 |       8 |                  1 |              | Japanese      |                   
  6981 |           9 |       8 |                  1 |              | Book Clubs    |                  5
   214 |          10 |       8 |                  0 |              | Korean        |                   
  2386 |          11 |       8 |                  0 |              | Reading       |                 10
  4384 |          12 |       8 |                  0 |              | Watching      |                 10
  3385 |          13 |       8 |                  0 |              | Book Clubs    |                 11
 36995 |          16 |       8 |                  0 |              | German        |                   
  • mostre os níveis de notificação do grupo nº 42 (muito mais)
SELECT gcnd.*, c.name, c.parent_category_id
FROM group_category_notification_defaults gcnd
JOIN categories c ON gcnd.category_id = c.id
WHERE group_id=42;
 id  | group_id | category_id | notification_level |     name      | parent_category_id 
-----+----------+-------------+--------------------+---------------+--------------------
   1 |       42 |          10 |                  0 | Korean        |                   
   8 |       42 |           7 |                  1 | Japanese      |                   
  11 |       42 |          13 |                  0 | Book Clubs    |                 11
  12 |       42 |          11 |                  0 | Reading       |                 10
  14 |       42 |          12 |                  0 | Watching      |                 10
  26 |       42 |           9 |                  1 | Book Clubs    |                  5
  27 |       42 |           6 |                  1 | Watching      |                  7
  28 |       42 |           5 |                  1 | Reading       |                  7
  97 |       42 |          16 |                  0 | German        |                   
 174 |       42 |          21 |                  0 | Book Clubs    |                 18
 177 |       42 |          18 |                  0 | Reading       |                 16
 178 |       42 |          22 |                  0 | Reading       |                 17
 179 |       42 |          23 |                  0 | Watching      |                 17
 180 |       42 |          17 |                  0 | Spanish       |                   
 181 |       42 |          19 |                  0 | Watching      |                 16
 182 |       42 |          25 |                  0 | Book Clubs    |                 22
 367 |       42 |           1 |                  0 | Uncategorized |                   

Existe alguma maneira de executar este processo ‘update_existing_users’ manualmente no console Rails? Tenho muito pouco conhecimento sobre Rails, então não consegui encontrá-lo no código. Acho que seria bom tentar executá-lo manualmente e ver se o problema está no processo de atualização ou se está em acionar o processo de atualização.

Me avisem se alguém tiver alguma ideia ou ajuda!

Obrigado

Informações adicionais:
Meu site: https://forums.learnnatively.com/
Versão do Discourse: 3.2.0.beta4-dev (46eec95719)

Portanto, após uma análise mais aprofundada, parece que o código atualizará apenas as alterações nas notificações de categoria padrão em um grupo de usuários… veja aqui para o tratamento de alterações e aqui para a atualização do banco de dados.

Isso significa que, por qualquer motivo, se o seu processo inicial de atualização do grupo não atualizar os objetos de usuário existentes, salvar novamente o grupo (mesmo com alterações) não aciona necessariamente as atualizações para as notificações de categoria padrão para os membros do grupo.

Não tenho certeza absoluta por que meu processo de atualização inicial não foi acionado, mas como usei uma chamada de API, não o administrador, posso ter enviado um parâmetro ‘update_existing_users’ incorreto (eu fiz um dump json de um valor ‘True’ do python).

Independentemente disso, consegui resolver esse problema.

Solução:

  1. Vá para a administração do grupo de usuários, redefina quaisquer padrões de categoria que ainda não pareçam ter sido atualizados nos usuários. (Ex: se os membros do grupo não tiverem corretamente um mudo em uma categoria ‘Suporte’, remova essa categoria das categorias silenciadas. Se essa categoria costumava estar em ‘normal’, redefina para ‘normal’)
  2. Salve o grupo e diga não para ‘atualizar usuários existentes’
  3. Altere as notificações de categoria do grupo para as notificações de categoria desejadas
  4. Salve o grupo e diga sim para ‘atualizar usuários existentes’

Pronto, agora deve estar tudo certo!

Para constar, não tenho julgamento sobre se esse comportamento é o correto ou não. No entanto, provavelmente poderia ser documentado :slight_smile:

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.