La primera insignia "Like" no se puede eliminar

Descripción: Un usuario solicitó que revoque su insignia “Primer Me Gusta” después de que él mismo dejara de dar “Me Gusta” a una publicación, pero la insignia seguía siendo reotorgada. El contexto se puede encontrar en mi publicación anterior en la categoría de soporte.

Pasos reproducibles:

  1. Crear un nuevo usuario
  2. Dar “Me Gusta” a una publicación
  3. Recibir la insignia “Primer Me Gusta”
  4. Dejar de dar “Me Gusta” a la publicación
  5. Cambiar a un usuario administrador
  6. Ir al panel de administración del usuario que dio “Me Gusta” a la publicación
  7. Visitar la opción “Editar Insignias”
  8. Hacer clic en “Revocar” en la insignia “Primer Me Gusta”
  9. Esperar un poco (no estoy seguro de cuándo se ejecuta el trabajo de relleno para esta insignia en particular, pero un día seguramente será suficiente. ¿Quizás intentar activar todos los trabajos relacionados con insignias en Sidekiq para acelerarlo?)
  10. La insignia se otorga automáticamente de nuevo al usuario, por la misma publicación a la que se dejó de dar “Me Gusta” y en la misma fecha en que se dio el “Me Gusta”.

He reducido el problema a esta línea de la consulta SQL para otorgar la insignia, porque, si bien la fila en post_actions para la acción de “Me Gusta” todavía existe después de dejar de dar “Me Gusta”, su columna deleted_at tiene un valor de fecha, que la consulta no tiene en cuenta. Creo que la solución para esto cambiaría la cláusula WHERE de la subconsulta a:

      WHERE post_action_type_id = 2 AND
        pa.deleted_at IS NULL AND
        (:backfill OR pa.post_id IN (:post_ids) )

pero no tengo un entorno de desarrollo configurado ni mucho tiempo para probar esta solución yo mismo.

Prioridad/Severidad: He resuelto este problema para mí mismo eliminando las filas post_actions relevantes, y nunca antes había recibido tal solicitud. Supongo que eso no lo convierte en una prioridad muy alta.

2 Me gusta

Le dio “me gusta” a una publicación. Quitar el “me gusta” de una publicación no cambia el hecho de que ha demostrado que sabe cómo dar “me gusta” a una publicación. Quizás sea elegible para una insignia de “Primer No Me Gusta”, pero ahora que le ha dado “me gusta” a una publicación, le ha dado “me gusta” a una publicación. Obtiene la insignia por haberle dado “me gusta” a una publicación. No se puede desanudar la campana.

Esa es mi suposición.

Tu solución fue muy ingeniosa. Otra forma de quitarle su insignia sería eliminar al usuario. :rofl:

2 Me gusta

Eso es cierto, pero sigo creyendo que es contraintuitivo que yo, como administrador, no pueda revocar dicha insignia del usuario, incluso después de que este haya dejado de dar “me gusta” a la publicación. Al menos debería haber algún tipo de aviso en el botón “Revocar” en la vista Editar insignias sobre cómo la insignia no se puede revocar. En lugar del comportamiento actual, que es volver a otorgar silenciosamente la insignia durante algún trabajo de rellenado, haciendo que el administrador se pregunte si realmente hizo clic en ese botón o no.

2 Me gusta

De acuerdo.

Creo que mi respuesta habría sido algo así como:

Lo siento, Dave. Me temo que no puedo hacer eso.

3 Me gusta

Movido a característica, supongo que la solicitud de característica es:

Hacer posible revocar al 100% una insignia que se reevalúa
o
Prohibir a los administradores revocar insignias basadas en SQL / insignias de evaluación recurrente


Por ahora, mi recomendación es “no lo hagas”, pero la experiencia del administrador ciertamente podría ser mejor.

1 me gusta