Skip to content

Commit d8e7b47

Browse files
committed
Add render_error to V2 base_api_controller
1 parent d23bc06 commit d8e7b47

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

app/controllers/api/v2/base_api_controller.rb

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)