Rails ActiveRecord Postgresql - Невозможно найти результат, выполняя где в столбце типа JSON - PullRequest
0 голосов
/ 12 декабря 2018

Мой json хранится в столбце json (parsed_document) на Postgresql:

{ "purchase_order": "8422" }

На моем контроллере rails я пытаюсь получить столбец parsed_document:

Orders.where("parsed_document ->> 'purchase_order' = '8422'")

Нет результатов .Чего мне не хватает?

Спасибо.

Вывод Rails:

[19] pry(main)> SapWrite.where("parsed_document ->> 'purchase_order' = '8422'")
=>   SapWrite Load (2.2ms)  SELECT "sap_writes".* FROM "sap_writes" WHERE 
(parsed_document ->> 'purchase_order' = '8422')
[]

Я обнаружил проблему.Это был я, к сожалению.Я извлекал JSON с сервера MSQL и анализировал его два раза.

records.each do |row| 
  parsed_document = row["parsed_document"] 
  json_parsed_document = JSON.parse(parsed_document) 
  @SapWrite = SapWrite.new(parsed_document:json_parsed_document.to_json) 
  @SapWrite.save 
end

В базе данных JSON, по-видимому, был прав, но это не так.

Итак, я удалил to_json из переменной json_parsed_document, и теперь он правильно записывает json, и теперь я могу запросить поле json.

Вставка JSON перед:

{\\\"purchase_order\\\":\\\"8314\\\"}

JSON после:

{\"purchase_order\":\"8314\"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...