红宝石
我想使用存储在2个数组中的信息来更新数据库中的表水果:
fruit_id=[2,8,14,35]
fruit_name=["apple","orange","banana","melon"]
例如:Fruit.id 2将Fruit.name用作“苹果”
我想到了for循环:
for i in fruit_id do
Fruit.find(i).update(name:fruit_name)
end
但是在我脑海中这才有意义。我也很抱歉,如果这个问题已经回答,我是新来的,不知道确切的名词来搜索...。非常感谢!
尝试这样的事情
fruit_id.zip(fruit_name).each do |id, name|
fruit = Fruit.find_by(id: id)
fruit.update_attribute(:name, name) if fruit
end
这里有一些提示,我可以建议:
因此结果代码将是
fruit_ids = [2, 8, 14, 35]
fruit_names = ['apple', 'orange', 'banana', 'melon']
fruits = fruit_ids.zip(fruit_names) # => [[2, 'apple'], [8, 'orange'], [14, 'banana'], [35, 'mellon']]
fruits.each do |(id, name)|
Fruit.where(id: id).update_all(name: name)
end
警告:update_all
会不是触发验证,因此,如果您有这种情况,最好将初始方法与Fruit.find(id).update(name: name)
一起使用>