Estoy utilizando find_by_sql para conectarme a una base de datos de Postgres y ejecutar una función de base de datos. La función de base de datos ejecuta una cantidad de instrucciones SQL y genera excepciones según sea necesario.Cómo acceder a la información de error de la base de datos al utilizar Rails y Postgres
¿Cómo atrapo el código de error y el mensaje de error provocado por la función Postgres en 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
Comencé tratando de encontrar esta información en el objeto de conexión, no tuve tanta suerte.
Cualquier ayuda muy apreciada.
Gracias por la respuesta, pero me temo que esto realmente no ayuda. –
Según tengo entendido, la matriz de errores se utiliza para presentar errores al usuario como resultado de la validación del modelo. Esto es diferente. Estoy buscando acceso al SQLCode/SQLState devuelto por Postgres como resultado de una llamada find_by_sql. Esto ocurre mucho antes de que se agregue nada a la matriz de errores. De hecho, el objetivo de esto es que estoy tratando de controlar exactamente qué se agrega a la matriz de errores como resultado de la llamada a la función SQL. –
No veo ninguna documentación en ninguna parte sobre cómo obtener acceso explícitamente al código de error de SQL. Parece que la única opción es hacer una manipulación de cadena para extraerla del mensaje de error. MUY insatisfactorio. No puedo creer que el manejo de la base de datos sea tan inflexible, así que DEBE haber una solución. –