【发布时间】:2020-10-26 18:52:48
【问题描述】:
我有一个名为messages 的表,其中有一个名为headers 的jsonB 列来存储邮件标题。它看起来像这样:
[
{
"name":"Cc",
"field":{
"name":"Cc",
"value":"\"abc@gmail.com\" <abc@gmail.com>",
"length":null,
"charset":"UTF-8",
"element":null,
"address_list":{
"addresses":[
{
"data":{
"raw":"\"abc@gmail.com\" <abc@gmail.com>",
"error":null,
"group":null,
"local":"abc",
"domain":"gmail.com",
"comments":[
],
"display_name":"abc@gmail.com",
"obs_domain_list":null
},
"parsed":true
}
],
"group_names":[
]
}
},
"charset":"UTF-8",
"field_order_id":14,
"unparsed_value":"\"abc@gmail.com\" <abc@gmail.com>"
},
{
"name":"Message-ID",
"field":{
"name":"Message-ID",
"uniq":1,
"value":"<sdasdasd+tkiCVQ@mail.gmail.com>",
"length":null,
"charset":"UTF-8",
"element":{
"message_ids":[
"sdasdasd+tkiCVQ@mail.gmail.com"
]
}
},
"charset":"UTF-8",
"field_order_id":16,
"unparsed_value":"<sdasdasd+tkiCVQ@mail.gmail.com>"
},
{
"name":"Subject",
"field":{
"name":"Subject",
"value":"Re: test email",
"errors":[
],
"length":null,
"charset":"UTF-8",
"element":null
},
"charset":"UTF-8",
"field_order_id":19,
"unparsed_value":"Re: test email"
}
]
我想要搜索 'name' = 'Subject' 和 'unparsed_value' 的记录,例如 %test%,并在 Rails 6.0.2 中返回结果?
我正在尝试下面提到的代码:
messages.where("headers @> '[{\"name\": \"Subject\"}, {\"unparsed_value\" LIKE \"%test%\"}]'")
但它会抛出错误!
【问题讨论】:
标签: ruby-on-rails json postgresql sql-like psql