我的服务根据用户的角色验证一些数据。如果查询参数错误,我想退出代码并呈现一些错误消息作为api响应?
render json: 'something' and return
我得到错误:
"status": 500,
"error": "Internal Server Error",
"exception": "#<NoMethodError: undefined method `render' for AuthenticationService:Class>",
"traces": {
"Application Trace": [
答案 0 :(得分:2)
简短的回答是:你不能。
对于身份验证或权限检查之类的内容,要求您的服务进行身份验证更为常见,然后该服务将返回您可以做出反应的值,或者抛出您可以做出反应的异常。
这样,代码的每个部分都可以对其需要的内容负责,而不再需要。您的服务可以进行身份验证,您的控制器可以调用渲染。
因此,例如,您可能会在服务中得到类似的内容:
def authenticate!
if !okay
raise AuthenticationError
end
end
在你的控制器中:
def my_action
begin
AuthenticationService.new.authenticate!
rescue AuthenticationError
render json: 'something' and return
end
end
(这是一个非常基本的例子 - 我已经编写了一个错误类和一个okay
方法来演示)