Ruby如何迭代实例数组

时间:2018-04-16 19:18:39

标签: ruby-on-rails ruby

我有来自Order.all

的这个数组
    [#<Order:0x00007f1d219f7028 id: 1, time: "01.00", amount: 21, created_at: Mon, 16 Apr 2018 17:44:41 UTC +00:00, updated_at: Mon, 16 Apr 2018 17:44:41 UTC +00:00>,
 #<Order:0x00007f1d219f6ee8 id: 2, time: "02.00", amount: 23, created_at: Mon, 16 Apr 2018 17:44:41 UTC +00:00, updated_at: Mon, 16 Apr 2018 17:44:41 UTC +00:00>]

当我Order.all.first[:time]时,我得到"01.00"以便“有效”。

但是当我做的时候

a = []
Order.all.each do |e|
  b = Array(e[:time])
  b << e[:amount]
  a << b
end

我再次获得上面的数组???

如何遍历数组以获取 [['01.00', 21], ['02.00', 23]]

2 个答案:

答案 0 :(得分:3)

你不需要那个。试试这个

Order.all.pluck(:time, :amount)

更简洁,更昂贵的方式

Order.all.map { |order| [order.time, order.amount] }

更加冗长,可能是你正在尝试做的事情

result = []
Order.all.each do |order|
  result << [order.time, order.amount]
end

答案 1 :(得分:0)

您的解决方案可能是正确的。您应该记住#each返回枚举的集合。您案件中的订单集合。

您期望的结果是变量a