我正在对服务进行 activeresource 调用,并且我想要一些自定义错误消息作为反馈。我有一些不是正常模型验证的验证,所以我不能只返回@object.errors。
因此,例如,我的验证之一就是这个。两个对象具有多对多关系,但我想将一个对象限制为与其他对象仅具有有限数量(例如 2 个)的关系。这是一些代码:
在客户端:
response = Customer.find(customer_id).put(:add_user, :user_id => user_id)
这会请求将用户添加到客户。然后在服务中我想检查这个添加是否有效。
def add_user
@user = User.find(params[:user_id])
@customer = Customer.find(params[:id])
if @customer.users.length > 2
render :xml => "ERR_only_2_users_allowed", :status => :unprocessable_entity
end
end
这是我的问题。在活动资源中,如果返回状态为错误,则客户端完全失败。我可以将状态更改为 200,然后我可以很好地取回 body err msg,但这似乎违背了错误响应代码的目的。
我可以将来自客户端的整个请求调用放在开始/救援块中
begin
response = Customer.find(customer_id).put(:add_user, :user_id => user_id)
rescue ActiveResource::ResourceInvalid => e
#return error code
end
但是当我捕捉到 422 (unprocessable_entity) 响应时,我什么也没得到,所以我没有收到我的自定义错误消息。响应 = 无
有谁知道我如何使用正确的响应代码来实现这些自定义错误消息?