Имея различное количество на ключ в JSONB - PullRequest
0 голосов
/ 28 мая 2018

У меня есть значения в таблице с именем Translation, которая содержит для каждого значения в каждом примере:

=> {"fr"=>"Jaune", "de"=>"", "en"=>"", "bg"=>"", "hr"=>"", "es"=>"", "hu"=>"", "it"=>"", "lt"=>"", "lv"=>"", "nl"=>"", "pl"=>"", "pt"=>"", "ro"=>"", "cs"=>""}

, и я рассчитываю получить номер перевода для каждого языка: я пытаюсь:

Translation.where("values->>'fr' IS NOT NULL").count

но это дает мне 0, что не правильно, кто-нибудь знает, как это сделать правильно?

1 Ответ

0 голосов
/ 28 мая 2018

Проблема, с которой вы столкнулись, состоит в том, что ключи, которые не имеют значений, все еще существуют в json, поэтому «не ноль» вернет их все, потому что ключ существует.у вас есть два варианта здесь, вы можете удалить пустые ключи из базы данных, чтобы не работал null, или измените его, чтобы увидеть, является ли ключ пустым

Вы можете сделать это следующим образом

Translation.where("values->>'fr' <> ''").count

и он будет работать с той структурой, которая у вас есть сейчас.

...