Salta utenti invariati per la modifica massiva dei badge

Attualmente, la modifica massiva dei badge rimuovendoli dai detentori precedenti comporta la rimozione e la riassegnazione immediata di un badge alle persone che si trovano nell’intersezione tra i detentori precedenti e quelli futuri.

Ciò si traduce in un’esperienza utente confusa, poiché gli utenti ricevono una notifica di ricezione del badge anche se nulla è cambiato.

Inoltre, ciò è in conflitto con uno dei nostri casi d’uso: vorremmo eliminare i badge obsoleti e assegnarne di nuovi passando l’elenco aggiornato dei detentori, pur mantenendo invariati gli altri detentori e la data di assegnazione.

Dal punto di vista delle funzionalità, la modifica sarebbe un netto miglioramento: caricando prima un elenco vuoto, si recupera il comportamento precedente.

1 Mi Piace

Con “passare la lista aggiornata” e “caricare una lista vuota”, sembra che tu stia lavorando nella console di Rails, forse con una lista di users.id?

Se è così, potrebbe essere utile ottenere l’elenco dei titolari attuali del badge per escluderli dalle tue operazioni di rimozione/assegnazione?

(Query dell'esploratore dati)
-- [params]
-- badge_id :badge

SELECT
    u.id AS user_id
FROM user_badges ub
JOIN users u  ON u.id = ub.user_id
JOIN badges b ON b.id = ub.badge_id
WHERE ub.badge_id = :badge

Con quella lista esportata, alcune query e script potrebbero:

  1. Trovare l’intersezione tra i titolari attuali del badge e la tua lista di “futuri titolari”.
  2. Rimuovere gli utenti di quell’intersezione dalla tua lista di “futuri titolari”.
  3. Revocare il badge a tutti gli utenti non presenti nell’intersezione.
  4. Caricare la lista modificata dei “futuri titolari” per assegnare il badge solo ai nuovi titolari.

(C’è anche la possibilità di farlo tutto direttamente in Rails, ma non sono molto esperto in quell’ambito.)

No? C’è un modulo per l’assegnazione di massa nel badge management UX, che sto utilizzando.

Uff, è un po’ imbarazzante, mi era sfuggita l’aggiunta del premio di massa.

Forse la tua funzionalità potrebbe essere un’altra opzione al momento del caricamento, qualcosa del genere?

1 Mi Piace