Como selecionar apenas parte do json, armazenada no Postgres, com o ActiveRecord
Digamos que eu tenho um modeloUser
, que tem um campo do tipojson
chamadosettings
. Vamos supor que esse campo se pareça mais ou menos com isso:
{
color: 'red',
language: 'English',
subitems:
{
item1: true,
item2: 43,
item3: ['foo', 'bar', 'baz']
}
}
Se eu fizerUser.select(:settings)
Vou receber todas as configurações para cada usuário. Mas quero obter apenas os idiomas para um usuário. Eu tentei os dois:
User.select("settings -> 'language'")
e
User.select("settings ->> 'language'")
mas isso apenas retorna objetos vazios:
[#<User:0x007f381fa92208 id: nil>,
...]
Tudo isso é possível? Se sim - posso fazê-lo usando apenasjson
ou preciso mudar parajsonb
?