최근 사이트를 Discourse로 이전했습니다. 그런데 많은 사용자의 사용자 이름이 변경되었는데, 새로운 사용자 이름에는 이메일 주소의 일부가 사용되는 것 같습니다. 이전의 이전 작업에서는 사용자 이름이 변경되는 것을 본 적이 없습니다. 이 문제를 되돌리는 방법은 무엇인가요?
이미 운영 환경에 배포했다면 변경이 어려울 수 있지만, 원래 사용자 이름은 사용자 커스텀 필드에 남아 있어야 합니다. 이러한 문제는 테스트 단계에서 해결하는 것이 좋습니다.
마이그레이션 스크립트에 문제가 없는 한, 사용자 이름이 변경되는 이유는 Discourse의 사용자 이름 형식과 호환되지 않기 때문입니다.
변경된 사용자 이름의 예가 있습니까? 어떤 시스템에서 마이그레이션을 수행했나요?
Jay님, 회신 주셔서 감사합니다. 이러한 수정 작업을 위해 사이트를 유지보수 모드로 전환해야 했습니다. 사용자 이름과 이름 열이 변경된 것이 좀 이상했습니다. 두 항목을 서로 교환하는 방법을 찾고 있습니다. 정말로 혼란스럽네요…
UserCustomField.where(user_id: some_id)를 확인하면 해당 사용자에게 어떤 사용자 지정 필드가 있는지 볼 수 있으며, 여기에는 원래 사용자 이름도 포함되어 있어야 합니다.
교체는 성공했습니다. 하지만 프로필을 열 수 없습니다! '에러, 페이지를 찾을 수 없습니다’라는 메시지가 표시됩니다.
다시 한 번 확인하고 싶은데, 사용자 이름을 다시 매핑한 후 페이지를 새로고침했나요? Discourse는 새로고침할 때까지 클라이언트 측에서 기존 이름을 계속 사용하므로, 이름을 다시 매핑한 후 새로고침하지 않으면 더 이상 존재하지 않는 사용자 프로필을 열려고 시도할 수 있습니다.
감사합니다. 해당 부분을 확인하겠습니다.
또한, 이메일 주소의 앞부분을 자동으로 할당하는 방식이 어떻게 결정되는지 이해가 되지 않습니다.
소중한 이 플랫폼은 사용자가 공백과 특수문자를 사용하여 프로필 이름을 만들 수 있었고, URL에는 userID를 사용했습니다.
URL에 userID를 사용하고, 공백과 특수문자가 포함된 프로필 이름을 그대로 이관할 수 있을까요?
sims의 사용자 이름과 이름이 동일하다는 것을 확인했습니다.
이제 일부 이름에는 공백이 포함되어 있음을 깨달았습니다.
사용자 이름과 이름 섹션을 교체하면, 프로필 이름 지침을 준수하지 않는 경우 discourse가 이메일 ID의 절반을 사용자 이름으로 지정할 수 있습니다.
그런데 왜 discourse는 애초에 이메일 주소를 사용해야 하는 걸까? 보안 위험이잖아.
아니요. Discourse는 사용자 이름에 공백이나 (대부분의) 특수문자를 허용하지 않습니다. 그래서 이름이 다시 작성되었습니다.
URL에 대해 말씀하신 내용을 이해하지 못하겠습니다.
사용자 이름을 생성하기 위해 무언가를 사용해야 합니다.
다음과 같이 처리합니다:
UserNameSuggester.suggest(
opts[:username].presence || opts[:name].presence || opts[:email],
즉, 사용자 이름이나 이름이 없으면 이메일 주소의 앞부분을 사용하는 것으로 대체됩니다.
그러면 다른 것으로 변경할 수 있나요? 아니면 이메일 주소를 옵션에서 제거할까요?