ruby-on-rails - Rails ActiveRecord Postgresql - 找不到在 JSON 类型列上执行 where 的结果
问题描述
我将我的 json 存储在 Postgresql 的 json 列(parsed_document)中:
{ "purchase_order": "8422" }
在我的 Rails 控制器上,我试图获取列 parsed_document :
Orders.where("parsed_document ->> 'purchase_order' = '8422'")
它没有返回任何结果。我错过了什么?
谢谢你。
导轨输出:
[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')
[]
我发现了问题。不幸的是我。我从 MSQL 服务器中提取 JSON 并对其进行两次解析。
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 显然是正确的,但事实并非如此。
所以我从 json_parsed_document 变量中删除了 to_json ,现在它正在正确地编写 json ,现在我可以查询 json 字段。
JSON插入之前:
{\\\"purchase_order\\\":\\\"8314\\\"}
之后的 JSON:
{\"purchase_order\":\"8314\"}
解决方案
推荐阅读
- python - 使用 SpaCyr 进行文本挖掘,可以做什么?
- javascript - 按 id 组合 2 个对象并保存 mongodb
- python - 访问 AllenNLP 中实例的字段值
- python - Discord.py 按名称中的单词编辑频道
- regex - RegEx - 字符串前的两个单词(正向前瞻)
- r - 将字符转换为日期并从r中的当前日期计算年龄
- linux - squid 配置失败,配置无效 `-': 机器 `-' 在 config.sub 上无法识别
- javascript - 在 onClick 触发器之后创建反应组件的最佳方法是什么(好习惯!)?
- ios - Node.js + APN:在本地,一切正常,但在云主机上启动时出现“端点错误:无法获取本地颁发者证书”
- php - 使用 htaccess 重写和简单的 php switch case 处理查询参数?