배지 일괄 편집 시 변경되지 않은 사용자 건너뛰기

현재, 이전 보유자로부터 배지를 제거하면서 대량 편집을 수행하면 이전 보유자와 향후 보유자의 교집합에 있는 사용자의 경우 배지가 제거된 직후 다시 부여되는 문제가 발생합니다.

이로 인해 사용자의 변경 사항이 없는데도 배지 부여에 대한 알림을 받게 되어 혼란스러운 사용자 경험을 초래합니다.

또한, 이는 우리의 사용 사례 중 하나와 충돌합니다. 우리는 구식이 된 배지를 제거하고 새로운 배지를 수여하면서, 기타 보유자 및 수여 날짜는 변경하지 않은 채 업데이트된 보유자 목록을 전달하는 방식을 원합니다.

기능 측면에서 이 변경은 엄밀한 의미에서 개선 사항입니다. 먼저 빈 목록을 업로드하면 이전 동작을 복원할 수 있기 때문입니다.

1개의 좋아요

"업데이트된 목록을 전달하는 것"과 "빈 목록을 업로드하는 것"이라는 표현을 보면, users.id 목록을 가지고 rails 콘솔에서 작업하고 계신 것 같습니다.

그렇다면 현재 배지 보유자 목록을 가져와서 제거/부여 작업에서 제외하는 것이 도움이 될 수 있을까요?

(데이터 탐색기 쿼리)
-- [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

이 내보낸 목록을 가지고 몇 가지 쿼리와 스크립트로 다음을 수행할 수 있습니다:

  1. 현재 배지 보유자와 “미래 보유자” 목록의 교집합을 찾습니다.
  2. “미래 보유자” 목록에서 해당 교집합에 속하는 사용자를 제거합니다.
  3. 교집합에 속하지 않는 사용자로부터 배지를 취소합니다.
  4. 편집된 “미래 보유자” 목록을 업로드하여 새 보유자에게만 배지를 부여합니다.

(모든 작업을 rails 내에서 처리할 수 있는 방법이 있을 수도 있지만, 저는 그 부분은 잘 알지 못합니다.)

아니요. 배지 관리 UX에 대량 수여 양식이 있는데, 제가 그걸 사용하고 있습니다.

아, 좀 부끄럽네요. 일괄 상여 추가 기능을 놓치고 있었어요.

아마도 이 기능이 업로드 시 또 다른 옵션으로 제공되면 어떨까요? 이런 식으로요?

1개의 좋아요