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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta