Я пытаюсь вставить рубиновый хеш в столбце Postgres JSON. В основном это набор хешей в массиве. Таким образом, у вас есть структура что-то вроде:Ruby with PostgreSQL - Вставка в поле JSON базы данных
[{"a":"1"},{"b":"2"},{"c":"3"}] #the length goes on
Существующий код, что я пытаюсь сделать, это:
require 'pg'
freq = 0.05
$test = 0
$sinval = 0
arr = Array.new
@conn = PG.connect(
:dbname => 'test_db',
:user => 'abc',
:port => 6100,
:host => 'localhost'
)
while true do
$test = ($test+freq).round(2)
$sinval = Math.sin($test*(Math::PI/180)).round(6)
hash = {:value=>$sinval.to_s}
arr.push(hash.to_json)
if(arr.length>=1800)
@conn.exec("INSERT INTO sinewave(data) VALUES('#{arr}');")
arr = Array.new
end
end
Но сейчас, я не в состоянии хранить в базе данных как я хочу. Для каждой строки, что я хотел бы видеть это JSON массив из 1800 объектов, и структура будет:
[{"a":"1"},{"b":"2"},{"c":"3"}]
Я не знаю, что случилось. Может быть hash = {:value=>$sinval.to_s}
Данная строка неправильная. Другие способы разобраться в этом?
какая ошибка вы получаете? –
Я не получал ошибок! все отлично. однако данные, хранящиеся в базе данных, представляют собой нечто вроде формы «[" {\ "value \": \ "- 0.000873 \"} "," {\ "value \": \ "- 0.001745 \"} "," {\ "value \": \ "- 0.002618 \"} "," {\ "value \": \ "- 0.003491 \"} "," {\ "value \": \ "- 0.004363 \"} ", "{\" value \ ": \" - 0.005236 \ "}", "{\" value \ ": \" - 0.006109 \ "}", "{\" value \ ": \" - 0.006981 \ "}" ] – Pragun
может кто-нибудь сказать мне, как вы используете html_safe из rails в ruby? – Pragun