# 사용자 이름 또는 이메일 주소로 사용자 ID 조회

**URL:** https://meta.discourse.org/t/lookup-user-id-from-username-or-email-address/198638
**Category:** Development
**Created:** [7월 30, 2021, 1:08오전 UTC](https://meta.discourse.org/t/lookup-user-id-from-username-or-email-address/198638 "2021-07-30T01:08:40Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![uckelman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uckelman/32/103854_2.png) [@uckelman](https://meta.discourse.org/u/uckelman)
#### Post date: [7월 30, 2021, 1:08오전 UTC](https://meta.discourse.org/t/lookup-user-id-from-username-or-email-address/198638/1 "2021-07-30T01:08:40Z")

</div>

기존 뉴스 피드의 아카이브를 JSON 형식으로 보유하고 있으며, 이를 새로운 포럼의 뉴스 카테고리에 채우기 위해 사용하고자 합니다. 피드 내 모든 게시글은 이미 포럼 계정을 보유한 사용자들이 작성한 것입니다. 가장 간단한 방법은 일반적인 JSON 가져오기(importer)를 수정하여 새 사용자를 생성하는 대신 기존 사용자를 조회(사용자 이름 또는 이메일 주소로)하도록 하는 것 같습니다.

입력 JSON에 빈 `users` 목록을 제공하면 새 사용자를 생성하지 않도록 할 수 있을 것 같고, 각 게시글의 사용자 ID를 설정하는 `/srcipts/import_scripts/json_generic.rb` 파일의 해당 줄을 변경하면 됩니다:

```plaintext
user_id: user_id_from_imported_user_id(username_for(first_post["author"])) || -1

```

따라서 이 키-값 쌍의 값을 가져오기(importer)가 이전에 생성한 사용자의 ID를 조회하는 것이 아니라, 기존 사용자의 ID를 가져오는 것으로 대체해야 합니다.

사용자 이름 또는 이메일 주소로 _기존_ 사용자의 ID를 조회하는 방법은 무엇입니까?

---

<div class="post-metadata">

### Author: ![j127](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j127/32/79093_2.png) [@j127](https://meta.discourse.org/u/j127)
#### Post date: [7월 30, 2021, 2:38오전 UTC](https://meta.discourse.org/t/lookup-user-id-from-username-or-email-address/198638/2 "2021-07-30T02:38:39Z")

</div>

> [@uckelman](#):
>
> _기존_ 사용자의 id를 사용자 이름 또는 이메일 주소로 조회하는 방법은 무엇인가요?

[API](https://docs.discourse.org/#tag/Users/paths/~1u~1%7Busername%7D.json/get)를 통해 수행할 수 있습니다.

---

<div class="post-metadata">

### Author: ![uckelman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uckelman/32/103854_2.png) [@uckelman](https://meta.discourse.org/u/uckelman)
#### Post date: [7월 30, 2021, 9:46오전 UTC](https://meta.discourse.org/t/lookup-user-id-from-username-or-email-address/198638/3 "2021-07-30T09:46:05Z")

</div>

JSON API를 통해 사용자를 조회할 수 있다는 점은 알고 있습니다. 하지만 저는 Discourse가 자체적으로 실행되는 Ruby 환경에서 이 작업을 수행하고 있으므로, JSON API를 호출하는 번거로움을 피하고 필요한 함수를 직접 호출하는 것이 훨씬 직관적이지 않을까요? 이것이 정말로 권장되는 방식인가요? 제가 확인해 본 다른 임포터 코드 어디에서도 JSON API를 사용하는 것을 볼 수 없었습니다.

---

<div class="post-metadata">

### Author: ![j127](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j127/32/79093_2.png) [@j127](https://meta.discourse.org/u/j127)
#### Post date: [7월 30, 2021, 8:16오후 UTC](https://meta.discourse.org/t/lookup-user-id-from-username-or-email-address/198638/4 "2021-07-30T20:16:16Z")

</div>

Discourse에 가져온 지 오래되어 잘 모르겠는데, 혹시 다른 분이 아시는 분이 있을까요. 가끔 이메일과 ID를 대량으로 확인해야 해서 API를 사용하고 있습니다.

---

<div class="post-metadata">

### Author: ![uckelman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/uckelman/32/103854_2.png) [@uckelman](https://meta.discourse.org/u/uckelman)
#### Post date: [9월 1, 2021, 12:34오전 UTC](https://meta.discourse.org/t/lookup-user-id-from-username-or-email-address/198638/5 "2021-09-01T00:34:12Z")

</div>

제가 찾던 것은 결국 이것이었네요:

```plaintext
User.find_by_username(username)&.id

```
