ActiveResource::BadRequest 对原始属性进行一次更新后尝试保存时出错

ActiveResource::BadRequest error when trying to save after one update to a primitive attribute

我目前正在使用一个 REST API,它有一个带有属性 "name."

的对象
item = person.find(id)

我可以毫无问题地遍历项目的属性,其中一个属性确实是 "name." 但是,当我尝试以下操作时:

item.attributes["name"] = "New Name"

我可以确认属性 "name" 已更新,但在调用

之后
item.save

导致 ActiveResource::BadRequest (400) 错误。有人遇到过这样的问题吗?

谢谢!

上面的我都试过了,我也试过了

item = person.find(id)
item.name = "New Name"
item.save

最后,根据建议,我尝试了

item.update_attribute(:name, "New Name")

并省略了 item.save,因为保存是固有执行的。

似乎无论我尝试什么,我都会继续看到以下堆栈跟踪:

ActiveResource::BadRequest (Failed.  Response code = 400.  Response message = Bad Request.): 
app/controllers/home_controller.rb:84:in `update_data'

第 84 行是更新 ActiveResource 对象的事件。

看起来 attributes= 在 Rails 的最新稳定版本中已被弃用。最后一个现有版本 (v3.1.0)。

相反,您可以使用 update_attribute 来更新记录的属性:

item.update_attribute(:name, "New Name")

update_attribute 将保存记录(如果有效),因此您不必对其调用 save