将数组移到Rails ActiveRecord表中的方法

时间:2019-02-15 07:56:22

标签: ruby-on-rails ruby

假设模型Fruit具有属性namepriceweight,并假定三个数组:

name = ["apple", "orange", "pear"]
price = [1.5, 1, 2]
weight = [130, 110, 120]

有没有一种方法可以在Rails中创建一个新记录,其中包括上面每个数组的第i个元素?

3 个答案:

答案 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)] }
)