假设我们有一个足智多谋的学生模型。我有一个关于通过PUT
api更新学生资源的问题。
如果我们向PUT /students/1
发送一个put请求以及包含我们想要更新的少数属性的请求正文。
让学生拥有许多属性,例如name,age,rollno,country,dob
,我们只想更新country
,因此在投放请求正文中我们会传递类似{country: 'germany'}
的内容,其他一些请求可能会通过只有dob
。
我们应该如何在服务器端处理它以仅更新正文中传递的属性?
答案 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)