# От номера поста к ID поста

**URL:** <https://meta.discourse.org/t/from-post-number-to-post-id/193247>\
**Category:** Development\
**Tags:** rest-api\
**Created:** [09.Июнь.2021 07:06:57 UTC](https://meta.discourse.org/t/from-post-number-to-post-id/193247 "2021-06-09T07:06:57Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![benkeks](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/benkeks/32/175218_2.png) [@benkeks](https://meta.discourse.org/u/benkeks)\
**Post date:** [21.Июль.2021 16:43:15 UTC](https://meta.discourse.org/t/from-post-number-to-post-id/193247/3 "2021-07-21T16:43:15Z")

</div>

Мне два года назад очень срочно требовалась такая же функция. Я до сих пор не нашел, как сделать это (более) правильно. Вот мой хак:

```ruby
def get_topic_post(topic_id, post_num)
    topic = @api.topic(topic_id, {print: true})
    post_obj = topic['post_stream']['posts'].find { |p| p['post_number'] == post_num }
    if post_obj
        post_obj['id']
    else
        throw "Could not find post #{topic_id}/#{post_num}."
    end
end

```

Это обходит упомянутые проблемы: `{print: true}` решает проблему пагинации. Метод `find` необходим, так как модерация может создать рассинхронизацию между индексами массива и номерами постов.

Это работает для тем такого размера, с которыми я работаю. Тем не менее, более прямой способ через API показался бы более удовлетворительным.

---

_[View the full topic](https://meta.discourse.org/t/from-post-number-to-post-id/193247)._
