首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails jsonb查询返回空

问Rails jsonb查询返回空
EN

Stack Overflow用户
提问于 2021-06-15 04:45:24
回答 1查看 119关注 0票数 1

我正在尝试查询jsonb列中的数据类型。当我使用标准SQL查询时,响应为空。我使用的是this as a reference.

我的数据:id: "f0242deb-fef5-4221-b4eb-68610d355a06", metadata: {"classification"=>"unclassified"}

我的控制器查询:Transaction.where('metadata @> ?', {classification: 'unclassified'}.to_json)

我将此作为响应Transaction Load (39.0ms) SELECT "transactions".* FROM "transactions" WHERE (metadata @> '{"classification":"unclassified"}') => []

我希望响应包含上述数据集,因为classification匹配。我哪里错了?

供参考的模式和模型。

代码语言:javascript
复制
schema.rb
create_table "transactions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
  t.jsonb "metadata", default: "{}", null: false
  t.index ["metadata"], name: "index_transactions_on_metadata", using: :gin
end
代码语言:javascript
复制
transaction.rb
class Transaction < ApplicationRecord
  require 'json'
  include ActiveModel::Serialization

  serialize :metadata
  store_accessor :metadata, :classification, :amount, :merchant, :category

  validates :transaction_date, :classification, :amount, :merchant, :category, presence: true

end
EN

回答 1

Stack Overflow用户

发布于 2021-06-15 16:50:53

我认为问题出在json serialization上,它看起来会强制转换输入的json数据,看看(在我的项目上):

代码语言:javascript
复制
> Event.create(payload: {question: "jsonb index", answer: "json serialize"})
> ... ["payload", "\"---\\n:question: jsonb index\\n:answer: json serialize\\n\""]

在数据库中,有效负载将保存为:"---\n:question: jsonb index\n:answer: json serialize\n",而jsonb查询无法找到它。

现在更改序列化程序

代码语言:javascript
复制
#require 'json'
#include ActiveModel::Serialization
serialize :payload, HashSerializer
store_accessor :payload, :question, :answer

有效负载将被保存为{"answer": "serialize", "question": "jsonb index"}和jsonb查询可以找到它。

当然,如果我删除serialize,它也可以工作

请记住,数据库适配器会为您处理某些序列化任务。例如: PostgreSQL中的json和jsonb类型将在JSON对象/数组语法和Ruby Hash或Array对象之间透明地转换。在这种情况下,不需要使用#serialize。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67977006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档