我正在[1,2,3,4]
收集ids params
,我调用了一个API,该API将返回相应ID的数组。例如。 ["Apple","Orange","Mango"]
。如何在我的数据库中更新相应的ID?
例如:上面提到的ids
来自我的用户表。 ids = [1,2,3,4]
,这是我的用户表中的主键。
在API响应中,我为相关fruit_names
获得了user_ids
数组。例如:ids = [1,2,3,4]
和fruit_names = ["a","b","c","d"]
,我的用户表中存在fruit_name
列。如何更新我的用户表中与fruit_name
相关的API响应中的ids
?
答案 0 :(得分:1)
您可以将each_with_index
与update
结合使用:
ids.each_with_index do |id, index|
User.update(id, :fruit_name, fruit_names[index])
end
上面的代码假定:
ids = [1,2,3,4]
fruit_names = ["a","b","c","d"]
并且这些数组的索引匹配。
请注意,这将对ids
数组中的每个项执行查询。如果您的ids
数组非常大,则效果不佳。
答案 1 :(得分:1)
Hash[ids.zip fruit_names].each do |id, fruit|
User.update_all({:fruit_name => fruit}, {:id => id})
end
OR
User.where(:id => ids).each do |usr|
usr.update_attribute(:fruit_name, fruit_names[ids.index(usr.id)])
end