Rails/ActiveRecord/Postgresql 中 JSON 对象键的查询

问题描述 投票:0回答:1

我在 Rails 应用程序的

Answer
表中有一个 json 列;
document
。我正在尝试编写一个范围,如果
document
为空,或者它仅包含两个特定键之一,则返回 true。

使用 ruby 我们可以做类似的事情:

Answer.document.except(:name, :secondary_name).empty?

但是我需要使用一个行为如下的范围:

a1 = Answer.document => {}
a2 = Answer.document => { name: "anything" }
a3 = Answer.document => { secondary_name: "anything" }
a4 = Answer.document => { other_important_key: "other_important_data" }  

Answers.untouched => [a1, a2, a3]
ruby-on-rails postgresql activerecord psql
1个回答
0
投票

最后,我使用以下内容反转了查询(以返回触摸的答案):

where("(document::jsonb - 'name' - 'secondary_name') <> '{}'::jsonb")

© www.soinside.com 2019 - 2024. All rights reserved.