如何使用JSON函数/运算符查询key是非null还是null?

rob*_*rob 4 postgresql json rails-4-2-1

我正在寻找以下sql代码的活动记录版本:

select *
from users
where (details->'email') is not null
Run Code Online (Sandbox Code Playgroud)

假设我的用户模型有一个叫做详细信息的json字段,有些记录会有一个电子邮件键值,有些则不会.我正在尝试查询具有电子邮件密钥值的用户记录.我尝试使用以下User.where("details - >'email'不为空"),但我的终端打印出来:

PG::UndefinedFunction: ERROR:  operator does not exist: json -> boolean
Run Code Online (Sandbox Code Playgroud)

我找到了这个SO帖子,试图做相反的查询,但想法是一样的.如果有人可以向我展示查询json密钥存在或不存在的Active Record版本,我将非常感激.

rob*_*rob 6

这适用于为用户提供电子邮件密钥:

User.where("(details->'email') is not null")
Run Code Online (Sandbox Code Playgroud)

这适用于没有电子邮件密钥的用户:

User.where("(details->'email') is null")
Run Code Online (Sandbox Code Playgroud)