Поиск идентификатора пользователя по имени пользователя или адресу электронной почты

У меня есть архив нашего старого новостного канала в формате JSON, который я хочу использовать для заполнения категории «Новости» на нашем новом форуме; все посты в этом канале были сделаны пользователями, у которых уже есть аккаунты на форуме. Самый простой способ сделать это — модифицировать универсальный импортер JSON так, чтобы он искал существующих пользователей (по имени пользователя или адресу электронной почты), а не создавал новых.

Похоже, я могу передать пустой список users в моём входном JSON-файле, чтобы избежать создания новых пользователей, а затем изменить строку в файле /srcipts/import_scripts/json_generic.rb, которая устанавливает идентификатор пользователя для каждого поста:

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

Мне нужно заменить значение этой пары ключ-значение на что-то, что получает идентификатор существующего пользователя, а не ищет идентификатор пользователя, созданного ранее импортером.

Как найти идентификатор существующего пользователя по имени пользователя или адресу электронной почты?

Это можно сделать с помощью API.

Я понимаю, что могу искать пользователей через JSON API, но поскольку я делаю это из Ruby, на котором сам работает Discourse, не будет ли проще вызвать нужную функцию напрямую, вместо того чтобы возиться с вызовом JSON API? Действительно ли это рекомендуемый способ? Я не вижу использования JSON API в других местах в импортерах, которые я изучил.

Прошло много времени с тех пор, как я импортировал данные в Discourse, поэтому я не уверен, но, возможно, кто-то другой знает. Иногда мне нужно искать пользователей по электронной почте и ID массово, поэтому я использую API.

То, что я искал, оказалось вот этим:

User.find_by_username(username)&.id