Cerca ID utente da nome utente o indirizzo email

Ho l’archivio del nostro vecchio feed di notizie in formato JSON, che vorrei utilizzare per popolare la categoria Notizie del nostro nuovo forum; tutti i post nel feed sono stati pubblicati da utenti che hanno già un account sul forum. Il modo più diretto per farlo sembra essere modificare l’importatore JSON generico per cercare gli utenti esistenti (per nome utente o indirizzo e-mail) anziché crearne di nuovi.

Sembra che potrei fornire un elenco users vuoto nel mio JSON di input per evitare la creazione di nuovi utenti, e poi modificare la riga in /srcipts/import_scripts/json_generic.rb che imposta l’ID utente per ogni post:

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

Quindi devo sostituire il valore di questa coppia chiave-valore con qualcosa che recuperi l’ID dell’utente esistente, anziché cercare l’ID di un utente creato in precedenza dall’importatore.

Come posso recuperare l’ID di un utente esistente, sia dal nome utente che dall’indirizzo e-mail?

È possibile farlo tramite l’API.

So che posso cercare gli utenti tramite l’API JSON, ma dato che sto facendo questo da Ruby, che è lo stesso linguaggio su cui gira Discourse, non sarebbe più diretto chiamare direttamente la funzione di cui ho bisogno invece di complicarmi la vita con una chiamata all’API JSON? È davvero questo il modo consigliato per farlo? Non vedo alcun utilizzo dell’API JSON altrove negli importatori che ho esaminato.

È passato molto tempo da quando ho importato in Discourse, quindi non sono sicuro, ma forse qualcun altro lo sa. A volte devo cercare utenti per email e ID in blocco, quindi ho iniziato a utilizzare l’API.

Quello che stavo cercando si è rivelato essere questo:

User.find_by_username(username)&.id