Pesquisar ID do usuário por nome de usuário ou endereço de e-mail

Tenho o arquivo de nosso antigo feed de notícias em JSON, que desejo usar para popular a categoria Notícias do nosso novo fórum; todas as postagens do feed foram feitas por usuários que já possuem contas no fórum. A maneira mais direta de fazer isso parece ser modificar o importador genérico de JSON para procurar usuários existentes (seja por nome de usuário ou endereço de e-mail) em vez de criar novos usuários.

Parece que eu poderia fornecer uma lista users vazia no meu JSON de entrada para evitar a criação de novos usuários e, em seguida, alterar a linha em /srcipts/import_scripts/json_generic.rb que define o ID do usuário para cada postagem:

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

Portanto, preciso substituir o valor desse par chave-valor por algo que obtenha o ID do usuário existente, em vez de procurar o ID de um usuário criado anteriormente pelo importador.

Como posso procurar o ID de um usuário existente, seja pelo nome de usuário ou pelo endereço de e-mail?

Isso pode ser feito com a API.

Sei que posso consultar usuários via API JSON, mas como estou fazendo isso em Ruby, que é a própria linguagem em que o Discourse roda, não seria mais direto chamar a função necessária diretamente, em vez de lidar com uma chamada à API JSON? É realmente essa a maneira recomendada de fazer isso? Não vejo uso da API JSON em nenhum outro lugar nos importadores que examinei.

Já faz muito tempo desde que importei para o Discourse, então não tenho certeza, mas talvez alguém mais saiba. Às vezes preciso consultar usuários por e-mail e ID em massa, então tenho usado a API.

O que eu estava procurando acabou sendo isso:

User.find_by_username(username)&.id