当从 API 获取完整的对象,并将其一些值放入 Rails 中的模型中时,如何告诉 Rails 仅更新仍为空/nil 的模型字段?
假设 API 总共有 10 个值,我想要模型有 6 个值,但有些记录已经填写了 4 个。我如何告诉 Rails 只填充两个空白值,而保留现有的值?
我不确定是否有方法可以做到这一点,但你可以这样做,获取具有 nil 值的属性列表
update_list = model_object.as_json.except(*model_object.attributes.keys)
并更改
update_list
中的值并进行正常更新 model_object.update_attributes(update_list)
如果遇到任何验证错误,并且可以跳过它们,则可以传递
validate: false
,或者可以迭代 update_list
并使用 update_attribute
代替。