@@ -37,6 +37,16 @@ def me
3737 )
3838 end
3939
40+ def render_error ( errors :, status :, details : nil )
41+ # Ensure errors is always an Array for consistent JSON representation
42+ error_list = errors . is_a? ( Array ) ? errors : [ errors ]
43+
44+ @payload = { errors : error_list }
45+ @payload [ :details ] = details if details . present?
46+
47+ render '/api/v2/error' , status : status
48+ end
49+
4050 private
4151
4252 # define instance variable json and associated getter and setter methods
@@ -77,17 +87,14 @@ def handle_exception(exception)
7787 def handle_internal_server_error ( exception )
7888 # log server errors
7989 Rails . logger . error "Exception message: #{ exception . message } "
90+ Rails . logger . error exception . backtrace . join ( "\n " ) if exception . backtrace . present?
8091
8192 # inform client of server error
82- message = _ ( 'There was a problem in the server.' )
83- @payload = { message : [ message ] }
84- render '/api/v2/error' , status : :internal_server_error
93+ render_error ( errors : _ ( 'There was a problem in the server.' ) , status : :internal_server_error )
8594 end
8695
8796 def handle_client_not_authorized
88- message = _ ( 'The client is not authorized to perform this action.' )
89- @payload = { message : [ message ] }
90- render '/api/v2/error' , status : :forbidden
97+ render_error ( errors : _ ( 'The client is not authorized to perform this action.' ) , status : :forbidden )
9198 end
9299
93100 # retrieve the requested pagination params or use defaults
0 commit comments