在 Ruby 中循环分配数组值的一组哈希的更好方法
Better way to loop through a set of hashes assigning array values in Ruby
我正在尝试将数据插入 Postgres。我有一个数据数组,我试图为每一列分配一个数组值。这是一个例子。
pg_insert = ['12/09/2015', 41, 'test account', '41.0']
Table.create([date: pg_insert[0],
account_number: pg_insert[1],
account_name: pg_insert[2],
values: pg_insert[3]])
有没有办法让我循环这个,这样我就可以把 i 放在 pg_insert 而不必输入数字?我不确定如何在 create() 参数内部循环。有什么解决办法吗?
如有任何建议,将不胜感激。
Table.create
正在接受哈希,我确定。
因此,您可以执行以下操作:
- 创建一个名为
keys
的数组,其中包含 4 个符号 :date
、:account_number
、:account_name
和 :values
。
pg_insert
已经是一个数组。
- 现在你可以把两个Array放在一起做你需要的Hash:
Hash[keys.zip(pg_insert)]
- 这允许您像这样调用
Table.create
:Table.create(Hash[keys.zip(pg_insert)])
完成代码如下:
keys = [:date, :account_number, :account_name, :values]
pg_insert = ['12/09/2015', 41, 'test account', '41.0']
Table.create(Hash[keys.zip(pg_insert)]) # or Table.create Hash[keys.zip(pg_insert)] if you don't want so many parentheses.
请注意,pg_insert
的顺序必须始终与 keys
的顺序相同。
您可以阅读有关 Array#zip 和 Hash.new 的更多信息以了解它们的工作原理。这个 SO link 也可能有帮助:Converting an array of keys and an array of values into a hash in Ruby
我正在尝试将数据插入 Postgres。我有一个数据数组,我试图为每一列分配一个数组值。这是一个例子。
pg_insert = ['12/09/2015', 41, 'test account', '41.0']
Table.create([date: pg_insert[0],
account_number: pg_insert[1],
account_name: pg_insert[2],
values: pg_insert[3]])
有没有办法让我循环这个,这样我就可以把 i 放在 pg_insert 而不必输入数字?我不确定如何在 create() 参数内部循环。有什么解决办法吗?
如有任何建议,将不胜感激。
Table.create
正在接受哈希,我确定。
因此,您可以执行以下操作:
- 创建一个名为
keys
的数组,其中包含 4 个符号:date
、:account_number
、:account_name
和:values
。 pg_insert
已经是一个数组。- 现在你可以把两个Array放在一起做你需要的Hash:
Hash[keys.zip(pg_insert)]
- 这允许您像这样调用
Table.create
:Table.create(Hash[keys.zip(pg_insert)])
完成代码如下:
keys = [:date, :account_number, :account_name, :values]
pg_insert = ['12/09/2015', 41, 'test account', '41.0']
Table.create(Hash[keys.zip(pg_insert)]) # or Table.create Hash[keys.zip(pg_insert)] if you don't want so many parentheses.
请注意,pg_insert
的顺序必须始终与 keys
的顺序相同。
您可以阅读有关 Array#zip 和 Hash.new 的更多信息以了解它们的工作原理。这个 SO link 也可能有帮助:Converting an array of keys and an array of values into a hash in Ruby