如何通过rails api实现部分更新

时间:2017-07-31 13:42:33

标签: ruby-on-rails rest

假设我们有一个足智多谋的学生模型。我有一个关于通过PUT api更新学生资源的问题。

如果我们向PUT /students/1发送一个put请求以及包含我们想要更新的少数属性的请求正文。

让学生拥有许多属性,例如name,age,rollno,country,dob,我们只想更新country,因此在投放请求正文中我们会传递类似{country: 'germany'}的内容,其他一些请求可能会通过只有dob

我们应该如何在服务器端处理它以仅更新正文中传递的属性?

1 个答案:

答案 0 :(得分:0)

ActiveRecord对象上的update方法采用属性哈希。您只能传递一个属性或模型的所有属性,而ActiveRecord将会找出已更改的内容,并且只更新这些列并将其余内容保留下来。

student = Student.create(name: 'name', age: 'age', rollno: 'rollno', country: 'country', dob: 'dob')

params = { country: 'germany' } # stand-in for your actual params hash in the controller

student.update(params)

只会更新country,其他所有内容都会保持不变。在您更新dob时的下一个请求中,它的工作方式相同。

params = { dob: '1/1/2000` }

student.update(params)