애플리케이션 데이터베이스에 멤버 테이블이 있습니다. 이 테이블에는 멤버 중 일부에 대한 애플리케이션 관련 정보를 저장하고 있습니다. 그중 한 컬럼이 discourse_user_id입니다. 멤버의 디스커스 프로필로 연결되는 링크를 렌더링하고 싶은데, 사용자 ID만으로 이것이 가능한지 궁금합니다.
discourse_user_name을 저장하지 않는 이유는 사용자가 이름을 변경할 수 있기 때문에, 변경 시 동기화를 유지해야 하는 문제가 생기기 때문입니다.
현재 제가 떠올릴 수 있는 유일한 방법은 /admin/users/<user-id>.json에 API 요청을 보내서 사용자 이름을 가져오는 것입니다. 하지만 멤버 목록에 프로필 링크를 함께 표시하는 인덱스 페이지에서 이렇게 많은 요청을 보내는 것은 부담이 될 것입니다.
마음에 떠오르는 다른 방법은 라우트를 추가하는 플러그인을 만드는 것인데, 이는 제가 처음 이런 질문을 하는 사람이 아닐 텐데도 불구하고 너무 많은 노력으로 느껴집니다. 그래서 이미 다른 해결책이 있는지 확인하고 싶었습니다.
한 가지 아이디어는 사용자 기록에 외부 ID를 넣고, 이를 통해 /by-external/:external_id 경로를 사용하는 것입니다. 다른 방법으로는 사용자가 사용자 이름을 변경할 때 외부 데이터베이스에 알리기 위해 웹훅을 사용하는 것입니다. 또 다른 방법은 사용자 이름 변경 기능을 단순히 비활성화하는 것입니다. discourse/config/routes.db 파일을 빠르게 살펴본 결과, user_id를 사용하는 경로를 찾지 못했습니다.