Cómo seleccionar solo una parte de json, almacenada en Postgres, con ActiveRecord
Digamos que tengo un modeloUser
, que tiene un campo de tipojson
llamadosettings
. Supongamos que este campo se ve más o menos así:
{
color: 'red',
language: 'English',
subitems:
{
item1: true,
item2: 43,
item3: ['foo', 'bar', 'baz']
}
}
Si lo hagoUser.select(:settings)
Obtendré todas las configuraciones para cada usuario. Pero quiero obtener solo los idiomas para un usuario. Probé ambos:
User.select("settings -> 'language'")
y
User.select("settings ->> 'language'")
pero esto solo devuelve objetos vacíos:
[#<User:0x007f381fa92208 id: nil>,
...]
¿Es esto posible? En caso afirmativo, ¿puedo hacerlo usando solojson
o necesito cambiar ajsonb
?