Следует отметить две вещи:
- Вам нужно правильное количество заполнителей.
#exec_params
хочет получить плоский массив для параметров.
Итак, вы хотите сказать:
connection.exec_params(
'INSERT INTO public.my_things (col1, col2) VALUES ($1, $2), ($3, $4), ($5, $6)',
['value11', 'value12', 'value21', 'value22', 'value31', 'value32']
)
Или, если у вас есть массив массивов, и вы не знаете, как долго это будет продолжаться до времени выполнения:
aoa = [['value11', 'value12'], ['value21', 'value22'], ['value31', 'value32'], ... ]
values = aoa.length.times.map { |i| "($#{2*i+1}, $#{2*i+2})" }.join(',')
connection.exec_params(
"INSERT INTO public.my_things (col1, col2) VALUES #{values}",
aoa.flatten
)