Sto utilizzando find_by_sql per connettersi a un database Postgres ed eseguire una funzione di database. La funzione database esegue un numero di istruzioni SQL e solleva eccezioni come richiesto.Come si accede alle informazioni di errore del database quando si utilizzano Rails e Postgres
Come si intercetta il codice di errore e il messaggio di errore generato dalla funzione Postgres in Rails?
def self.validate_email(systemuserid, emailaddress)
begin
result = (self.find_by_sql(["SELECT fn_systemuser_validate_email(?, ?) AS returncode",
systemuserid, emailaddress])).first
rescue => err
# I want to get access to the error code and error message here and act accordingly
# errno = ??
# errmsg = ??
if errno == 10000
end
end
return result[:returncode]
end
Ho iniziato cercando di trovare queste informazioni nell'oggetto di connessione, non è così.
Qualsiasi aiuto molto apprezzato.
Grazie per la risposta, ma ho paura che questo non aiuta davvero. –
La mia comprensione è che la matrice degli errori viene utilizzata per presentare gli errori all'utente in seguito alla convalida del modello. Questo è diverso. Sto cercando l'accesso a SQLCode/SQLState restituito da Postgres come risultato di una chiamata find_by_sql. Questo si verifica molto prima di qualsiasi cosa venga aggiunta alla matrice degli errori. In realtà, il punto è che sto cercando di controllare esattamente cosa viene aggiunto all'array degli errori come risultato della chiamata della funzione SQL. –
Non riesco a visualizzare alcuna documentazione in alcun modo su come ottenere l'accesso esplicito al codice di errore SQL. Sembra che l'unica opzione sia quella di manipolare le stringhe per estrarlo dal messaggio di errore. MOLTO insoddisfacente. Non posso credere che la gestione del database sia così inflessibile, quindi DEVE esserci una soluzione. –