我正在尝试将数据插入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]])
有没有办法我可以循环这个,所以我可以把我放在pg_insert而不是输入数字?我不确定如何循环create()参数。有没有办法解决这个问题?
任何建议都会非常感谢。
答案 0 :(得分:2)
Table.create
正在接受哈希,我敢肯定。
以下是您可以做的事情:
keys
的数组,其中包含4个符号:date
,:account_number
,:account_name
和:values
。pg_insert
已经是一个数组。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链接也可能有所帮助:Converting an array of keys and an array of values into a hash in Ruby