告诉 Rails 仅更新空白或 nil 值与完整的 API 对象

问题描述 投票:0回答:1

当从 API 获取完整的对象,并将其一些值放入 Rails 中的模型中时,如何告诉 Rails 仅更新仍为空/nil 的模型字段?

假设 API 总共有 10 个值,我想要模型有 6 个值,但有些记录已经填写了 4 个。我如何告诉 Rails 只填充两个空白值,而保留现有的值?

ruby-on-rails controller
1个回答
0
投票

我不确定是否有方法可以做到这一点,但你可以这样做,获取具有 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
代替。

© www.soinside.com 2019 - 2024. All rights reserved.