我有一个API,我使用ActiveResouce与它进行交互。
API的终点之一是update
。
我正在服务器端进行用户验证错误,并在用户验证错误的情况下将错误响应返回给客户端。
但.update_attributes
返回布尔值true
/ false
。我想使用错误响应,以便我可以在UI中呈现它。我怎么能这样做?
答案 0 :(得分:2)
update_attributes
只是在正确保存时将布尔值设置为true
。
如果您想检查错误,可以拨打model.errors
并查看消息。
user = User.first
user.update_attributes(username: '') #=> false
user.errors.to_a #=> ["Username can't be blank", "Username must be at least 3 characters"]
您可以根据需要在API中格式化并返回这些错误
答案 1 :(得分:0)
Documentation in the source code表示错误会引发异常。您可以拯救该异常,并根据您从中调用它的任何方法返回一些内容。这只是一个基本示例,但您希望捕获引发的异常,而不是StandardError
,但可能是ActiveResource
。由于我不确定究竟是什么异常,您可以尝试这个并查看实际异常是什么,并使用它来返回方法中有用的东西。
def some_method(params)
some_api_obj.update_attributes(params)
rescue Exception => e
puts e
end
答案 2 :(得分:0)
为确保您的记录已经过验证,请继续使用.update
或.update_attributes
,但您需要先将记录设置为变量以获取详细信息错误,如果有。
user = User.first
user.update(name: "Voldemore")
pp user.errors # return array of errors where you can send to UI
使用回调和验证的更新方法的参考:
http://www.davidverhasselt.com/set-attributes-in-activerecord/