Il primo badge "Mi piace" non può essere rimosso

Descrizione: Un utente mi ha chiesto di revocare il suo badge “First Like” dopo che lui stesso ha rimosso il “mi piace” da un post, ma il badge continuava a essere riassegnato. Il contesto si trova nel mio post precedente nella categoria di supporto.

Passaggi riproducibili:

  1. Crea un nuovo utente
  2. Metti “mi piace” a un post
  3. Ricevi il badge “First Like”
  4. Rimuovi il “mi piace” dal post
  5. Passa a un utente amministratore
  6. Vai al pannello di amministrazione dell’utente che ha messo “mi piace” al post
  7. Visita l’opzione “Modifica badge”
  8. Fai clic su “Revoca” sul badge “First Like”
  9. Aspetta un po’ (non sono sicuro di quando venga eseguito il processo di backfill per questo particolare badge, ma un giorno sarà sicuramente sufficiente. Forse prova ad attivare tutti i processi relativi ai badge in Sidekiq per accelerare?)
  10. Il badge viene automaticamente riassegnato all’utente, per lo stesso post a cui è stato rimosso il “mi piace” e alla stessa data in cui è stato effettuato il “mi piace”.

Ho ristretto il problema a questa riga della query SQL per l’assegnazione del badge, perché, mentre la riga in post_actions per l’azione “mi piace” esiste ancora dopo la rimozione del “mi piace”, la sua colonna deleted_at ha un valore di data, che la query non tiene in considerazione. Credo che la correzione per questo cambierebbe la clausola WHERE della sottoquery in:

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

ma non ho un ambiente di sviluppo configurato né molto tempo per testare questa correzione.

Priorità/Gravità: Ho risolto questo problema per me stesso eliminando già le righe post_actions pertinenti, e non ho mai ricevuto una richiesta simile prima. Immagino che questo non lo renda una priorità molto alta?

2 Mi Piace

Ha messo like a un post. Rimuovere il like a un post non cambia il fatto che ha dimostrato di sapere come mettere like a un post. Forse è idoneo per un badge “First Unlike”, ma ora che ha messo like a un post, ha messo like a un post. Riceve il badge per aver messo like a un post. Non puoi disfare ciò che è stato fatto.

Questa è la mia ipotesi.

La tua soluzione è stata molto intelligente. Un altro modo per rimuovere il suo badge sarebbe eliminare l’utente. :rofl:

2 Mi Piace

Questo è vero, ma credo ancora che sia controintuitivo che io, come amministratore, non possa revocare tale badge dall’utente, anche dopo che ha tolto il “mi piace” al post. Almeno dovrebbe esserci una sorta di avviso sul pulsante “Revoca” nella vista Modifica badge su come il badge non possa essere revocato? Invece del comportamento attuale, che è quello di riassegnare silenziosamente il badge durante un qualche processo di riempimento, facendo chiedere all’amministratore se ha davvero cliccato quel pulsante o meno.

2 Mi Piace

Concordo.

Penso che la mia risposta sarebbe stata simile a:

Mi dispiace, Dave. Temo di non poterlo fare.

3 Mi Piace

Spostato in feature, immagino che la richiesta di feature sia:

Rendere possibile revocare al 100% un badge che viene rivalutato
o
Vietare agli amministratori di revocare badge basati su SQL / badge a valutazione ricorrente


Per ora il mio consiglio è “non farlo”, ma l’esperienza dell’amministratore potrebbe certamente essere migliore.

1 Mi Piace