2年前、私も同じ機能に切実に必要とされていました。しかし、いまだにそれをより適切に行う方法が見つかっていません。これが私のハックです:
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 を通じてより直接的な方法があれば、より満足できるでしょう。