El grupo de usuarios 'categorías silenciadas' no actualiza las notificaciones de categoría de los miembros

Cuando actualizo las categorías silenciadas en un grupo de usuarios y respondo “sí” a “¿actualizar usuarios existentes?”, no parece actualizarse. Por ejemplo, mira a este usuario, el número 8, que es miembro del grupo número 42, pero le faltan muchas filas de category_user:

RESULTADOS SQL
  • Confirmar la membresía del usuario #8 en el grupo #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
  • Mostrar los niveles de notificación actuales del usuario #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        |                   

  • mostrar los niveles de notificación del grupo #42 (muchos más)
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 |                   

¿Hay alguna forma de ejecutar este proceso de ‘actualizar_usuarios_existentes’ manualmente en la consola de Rails? No sé mucho de Rails, así que no pude encontrarlo en el código. Creo que sería bueno intentar ejecutarlo manualmente y ver si el problema está en el proceso de actualización o en cómo se activa.

¡Avísame si alguien tiene alguna idea o ayuda!

Gracias

Información adicional:
Mi sitio: https://forums.learnnatively.com/
Versión de Discourse: 3.2.0.beta4-dev (46eec95719)

Así que, tras una revisión más detallada, parece que el código solo actualizará los cambios en las notificaciones de categorías predeterminadas en un grupo de usuarios… véase aquí para el manejo de cambios y aquí para la actualización de la base de datos.

Esto significa que si, por la razón que sea, tu proceso de actualización inicial del grupo no actualiza los objetos de usuario existentes, volver a guardar el grupo (incluso con cambios) no activa necesariamente las actualizaciones de las notificaciones de categorías predeterminadas para los miembros del grupo.

No estoy del todo seguro de por qué mi proceso de actualización inicial no se activó, pero como usé una llamada a la API, no el administrador, es posible que haya enviado un parámetro ‘update_existing_users’ incorrecto (convertí a JSON un valor ‘True’ de Python).

En cualquier caso, logré resolver este problema.

Solución:

  1. Ve a la administración del grupo de usuarios, restablece cualquier valor predeterminado de categoría que aún no parezca estar actualizado en los usuarios. (Ej: si los miembros del grupo no tienen correctamente silenciada una categoría de ‘Soporte’, elimina esa categoría de las categorías silenciadas. Si esa categoría solía estar en ‘normal’, restablécela a ‘normal’).
  2. Guarda el grupo y di que no a ‘actualizar usuarios existentes’.
  3. Cambia las notificaciones de categorías del grupo a las notificaciones de categorías deseadas.
  4. Guarda el grupo y di que sí a ‘actualizar usuarios existentes’.

¡Voilá, ahora debería estar bien!

De todos modos, no tengo ningún juicio sobre si este comportamiento es el correcto o no. Sin embargo, probablemente podría documentarse :slight_smile:

1 me gusta

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