존재하지 않는 사용자에게 배지를 부여하지 않는 것이 좋을까요?

one our badge pages 페이지를 살펴보니

이런 모습이 보여서 궁금해졌습니다. 모든 아바타는 어디로 사라진 걸까요?

알고 보니 해당 사용자들은 존재하지 않는 사용자들이었습니다.

아마 더 이상 존재하지 않는 사용자에게 배지를 부여하는 것을 피해야 하지 않을까요? 아니면 표시되는 것을 막아야 할까요? 어쨌든, 이들은 실제 사용자—우리가 신경 써야 할 사용자들—의 아바타를 밀어내고 있습니다!

10개의 좋아요

음… 여기 뭔가 이상한데, 그 이유는:

grant는 이미 user에 조인되어 있으므로, user id를 어딘가에서 가져와야 합니다.

이렇게 스코프가 설정되어 있으면 dependent destroy가 제대로 작동하지 않는 것 같기도 합니다.

어쨌든 주간 정리 작업을 추가할 수는 있습니다.

1개의 좋아요

이 배지들이 언제 부여되었는지를 고려해 보면(작성 시점 기준으로 가장 최근이었던 것들), 계정 삭제 시 삭제되지 않는 것이 아니라, 사용자 계정이 존재하지 않을 때 부여되는 것으로 추정됩니다.

확인해 봐야겠습니다.

2개의 좋아요

행에는 사용자 ID가 포함되어 있는데, 사용자가 삭제되면 이 ID를 가져올 곳이 없기 때문에 이상합니다.

3개의 좋아요

사용자 ID가 incoming_links 테이블에 저장되어 있다고 생각합니다. 해당 레코드는 종속적으로 삭제되지 않으며, 공유 배지 쿼리는 incoming_links 테이블에서 user_id가 null인 경우만 방지합니다:

https://github.com/discourse/discourse/blob/main/lib/badge_queries.rb#L199

First Share 배지도 유사한 버그가 있을 수 있습니다:

https://github.com/discourse/discourse/blob/main/lib/badge_queries.rb#L64

3개의 좋아요

사용자 테이블에 해당 배지 쿼리를 조인하는 pull request를 만들었습니다. 제 첫 pull request이니, 모든 것을 올바르게 했기를 바랍니다!

3개의 좋아요