Buscar ID de usuario por nombre de usuario o dirección de correo electrónico

Tengo el archivo de nuestro antiguo feed de noticias en formato JSON, que quiero utilizar para rellenar la categoría de Noticias de nuestro nuevo foro; todas las publicaciones del feed fueron realizadas por usuarios que ya tienen cuentas en el foro. La forma más directa de hacerlo parece ser modificar el importador genérico de JSON para que busque usuarios existentes (ya sea por nombre de usuario o por dirección de correo electrónico) en lugar de crear nuevos usuarios.

Parece que podría proporcionar una lista users vacía en mi JSON de entrada para evitar crear nuevos usuarios y, a continuación, cambiar la línea en /srcipts/import_scripts/json_generic.rb que establece el ID de usuario para cada publicación:

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

Por lo tanto, necesito reemplazar el valor de este par clave-valor con algo que obtenga el ID del usuario existente, en lugar de buscar el ID de un usuario creado anteriormente por el importador.

¿Cómo puedo buscar el ID de un usuario existente, ya sea desde el nombre de usuario o la dirección de correo electrónico?

Esto se puede hacer con la API.

Sé que puedo buscar usuarios a través de la API JSON, pero como lo estoy haciendo desde Ruby, el mismo lenguaje en el que se ejecuta Discourse, ¿no sería más directo llamar a la función que necesito directamente en lugar de complicarme con una llamada a la API JSON? ¿Es realmente esa la forma recomendada de hacerlo? No veo ningún uso de la API JSON en ningún otro lugar de los importadores que he revisado.

Ha pasado mucho tiempo desde que importé en Discourse, así que no estoy seguro, pero quizás alguien más lo sepa. A veces tengo que buscar usuarios por correo electrónico e ID en masa, por lo que he estado usando la API.

Lo que estaba buscando resultó ser esto:

User.find_by_username(username)&.id