假设模型Fruit
具有属性name
,price
和weight
,并假定三个数组:
name = ["apple", "orange", "pear"]
price = [1.5, 1, 2]
weight = [130, 110, 120]
有没有一种方法可以在Rails中创建一个新记录,其中包括上面每个数组的第i个元素?
答案 0 :(得分:2)
只是出于好奇:
list.txt
答案 1 :(得分:1)
没有这样的方法,但是您要循环循环在Fruit
内添加数字对象,如下所示,
name.length.times { |i| Fruit.create(name: name[i], price: price[i], weight: weight[i]) }
答案 2 :(得分:1)
您可以通过以下方式获得哈希数组:
name.zip(price, weight).map { |a| Hash[[:name, :price, :weight].zip(a)] }
# [{:name=>"apple", :price=>1.5, :weight=>130}, {:name=>"orange", :price=>1, :weight=>110}, {:name=>"pear", :price=>2, :weight=>120}]
.zip
将数组合并在一起。 Hash[]
是用于哈希的特殊构造方法,该方法采用键/值对数组数组。
要一次创建多个记录,您只需将哈希数组传递给create方法:
Fruit.create(
name.zip(price, weight).map { |a| Hash[[:name, :price, :weight].zip(a)] }
)