sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Un campo de rieles que es una matriz de objetos JSON?

Como está usando postgres, tiene suerte:postgres tiene un json escribe. Esto es mucho mejor que usar serialize para almacenar los datos como una forma de cadena codificada, porque postgres tiene una rica familia de operadores que le permiten consultar esos datos json.

Si está utilizando postgres 9.4, también puede usar el tipo jsonb. Esto generalmente es mejor ya que almacena una versión procesada de los datos (es decir, no tiene que seguir analizando los datos una y otra vez) y permite índices.

Rails admite esto desde el primer momento (ver aquí ), solo necesita agregar una columna de tipo json (b). Si su migración contiene

create_table :damages do |t|
  t.string :description
  t.jsonb :damage_points
end

entonces

Damage.create(damage_points:  [{left: 40, top: 99}, {left: 100, top: 35}])

crearía una fila con el almacén de datos de puntos de daño como json. Lo único que debe tener en cuenta es que, aunque sus datos de entrada tienen símbolos como claves en los valores hash, al obtenerlos de la base de datos siempre obtendrá cadenas como claves.