Как выполнить запрос с помощью функции/оператора JSON, где ключ не равен нулю или равен нулю?

Я ищу активную версию записи следующего кода sql:

select *
from users
where (details->'email') is not null

Предположим, что в моей модели User есть поле json с именем, детали, и некоторые записи будут иметь ключ-значение электронной почты, а некоторые — нет. Я пытаюсь запросить записи пользователей, у которых есть электронная почта, ключ-значение. Я попытался использовать следующее: User.where("details->'email' is not null"), но мой терминал выводит это:

PG::UndefinedFunction: ERROR:  operator does not exist: json -> boolean

Я нашел этот пост SO, который пытается сделать обратное запрос, но идея та же. Если кто-то может показать мне версию запроса Active Record, где присутствует или отсутствует ключ json, я был бы очень признателен.


person robskrob    schedule 05.08.2015    source источник


Ответы (1)


Это сработало для получения пользователями ключа электронной почты:

User.where("(details->'email') is not null")

Это работало для получения пользователей без ключа электронной почты:

User.where("(details->'email') is null")
person robskrob    schedule 05.08.2015