El flair del usuario permanece después de que el usuario es eliminado del grupo

Si elimino a un usuario de un grupo, ¿debería esperar que el distintivo (flair) de ese grupo se elimine inmediatamente del avatar del usuario?

Acabo de eliminar a un usuario de un grupo.
No tiene ningún grupo principal seleccionado.
image

En sus preferencias, no tiene ningún distintivo seleccionado.

He actualizado mi navegador y me he desconectado y vuelto a conectar.

¿Tiene que desconectarse y volver a conectarse ella para que se elimine el distintivo? ¿Estoy pasando por alto algún paso?

6 Me gusta

La mayoría de los trabajos se muestran en forum.example.com/sidekiq/scheduler. Por ejemplo, si modificaste una consulta de insignias, podrías esperar un día a que se ejecute el trabajo BadgeGrant, o podrías acelerarlo pulsando manualmente el botón Ejecutar. Sin embargo, no sé cuál de esos trabajos actualiza los distintivos.

1 me gusta

Sí, excepto por un pequeño caso límite con un usuario anónimo, que verá el distintivo antiguo en algunas páginas durante 1 minuto.

Investigaremos y solucionaremos el problema.

3 Me gusta

Los insignias de usuario también se mantienen cuando el grupo principal se cambia a un nuevo grupo principal que tenga una insignia asociada.

1 me gusta

Esto ya está solucionado aquí

¿Cambió el grupo principal utilizando la acción masiva «Hacer todos principales» en la página del grupo individual?

4 Me gusta

No, cambié el grupo principal de un solo usuario en la página de administración del usuario.

1 me gusta

Quiero informarte de que el problema persiste en la versión 2.8.0.beta4 (https://github.com/discourse/discourse/commits/1a65f0bfbbd32887a3c90fdaa894487c21f8467a).

Aún no hemos actualizado al último commit, ya que no hay cambios destinados a corregir este error.
En nuestro caso, los distintivos de usuario (flairs) no se actualizan cuando modificamos grupos mediante Discourse Connect SSO. Vemos que el usuario ya no está en el grupo, pero el distintivo sigue apareciendo.

Esperamos que esto ayude a identificar y corregir el error.

Esta solución no funcionará de forma retroactiva. Debes actualizar manualmente las insignias de los usuarios antiguos. ¿Podrías decirme cuántos usuarios se ven afectados por esto en tu caso?

Vaya. Bueno, no tengo los estimados. Según nuestros flujos de datos, podría haber decenas y cientos de usuarios que abandonan o se unen a grupos específicos a través de SSO cada día.
¿De todas formas, puedo contar a los usuarios con insignias desactualizadas (no vinculadas a grupos)?

¿Y cómo se editan incluso los distintivos de otros usuarios? No pude encontrar esa opción en el panel de administración. No digo que vaya a actualizar usuario por usuario para eliminar el legado de este error.

Por cierto, eliminar el distintivo de la configuración del grupo y subir otra imagen de distintivo no ayuda. Los usuarios que no pertenecen a este grupo siguen manteniendo el distintivo del grupo :(.

Solo verifiqué si alguien sabe qué hacer con este problema


Perdón por subir este post tantas veces, pero este error está afectando seriamente a nuestra comunidad :frowning:
@vinothkannans ¿tienes alguna sugerencia sobre cómo proceder con sus efectos para nosotros?

User.where(flair_group_id: REPLACE_WITH_GROUP_ID).where.not(primary_group_id: REPLACE_WITH_GROUP_ID).update_all(flair_group_id: nil)

El comando anterior puede solucionar tu problema. Ejecútalo en tu consola de Rails. Por favor, realiza una copia de seguridad antes de ejecutarlo.

Gracias por tu respuesta.
¿Entiendo correctamente que, debido a los efectos de este error, deberíamos realizar consultas como estas con frecuencia diaria u otra periodicidad? El caso es que nuestro grupo de usuarios se actualiza diariamente y cada vez que cambia el estado de la suscripción del usuario en el sitio web principal. Todo se realiza mediante SSO.

No, no es necesario ejecutar esto regularmente. Ahora el problema está solucionado en el commit anterior. Este comando corregirá las insignias de los usuarios afectados anteriormente.

Mañana buscaré una solución alternativa.

1 me gusta

Gracias, esperaré pacientemente los resultados de tu investigación antes de recurrir a las consultas de Rails. Por favor, házmelo saber si puedo ayudarte en este asunto.

@kinetiksoft el siguiente código de Rails debería solucionar el problema para todos los miembros de cada grupo. Eliminará el distintivo del grupo de los usuarios si ya no pertenecen a ese grupo de distintivos.

Nota: no es necesario ejecutar este script regularmente. Es una solución única para esos usuarios antiguos afectados. Realiza una copia de seguridad como precaución antes de ejecutarlo.

User.joins("LEFT OUTER JOIN group_users ON group_users.user_id = users.id AND group_users.group_id = users.flair_group_id").where(group_users: { id: nil }).where.not(flair_group_id: nil).update_all(flair_group_id: nil)

¡Hola @vinothkannans!

¡Gracias! Te avisaré en cuanto ejecutemos la consulta y te daré algunas actualizaciones en los próximos días para verificar que no haya inconsistencias en las relaciones entre insignias y grupos después de eso.

1 me gusta

https://github.com/discourse/discourse/pull/14367

Además, he subido otra corrección en el commit anterior. Asegúrate de actualizar tu sitio una vez que se haya fusionado.

1 me gusta

Genial, seguro, echaré un vistazo a los próximos commits en la sección de actualización.
¿Deberíamos esperar con la consulta SQL mencionada arriba o podemos proceder con ella sin esperar a que el commit se fusionen en nuestra instancia de Discourse?

Puedes ejecutar el comando después de la actualización.

2 Me gusta