如何从ActiveResource的`update_attribute`方法获得响应?

时间:2018-04-15 21:21:53

标签: ruby-on-rails ruby

我有一个API,我使用ActiveResouce与它进行交互。 API的终点之一是update

我正在服务器端进行用户验证错误,并在用户验证错误的情况下将错误响应返回给客户端。

.update_attributes返回布尔值true / false。我想使用错误响应,以便我可以在UI中呈现它。我怎么能这样做?

3 个答案:

答案 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/