PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Um campo de trilhos que é uma matriz de objetos JSON?


Como você está usando o postgres, você está com sorte:o postgres tem um json modelo. Isso é muito melhor do que usar serialize para armazenar os dados como alguma forma de string codificada, porque o postgres possui uma rica família de operadores que permitem consultar esses dados json.

Se você estiver usando o postgres 9.4, também poderá usar o tipo jsonb. Isso geralmente é melhor, pois armazena uma versão processada dos dados (ou seja, não precisa continuar analisando os dados repetidamente) e permite índices.

Rails suporta isso imediatamente (veja aqui ), você só precisa adicionar uma coluna do tipo json(b). Se sua migração contiver
create_table :damages do |t|
  t.string :description
  t.jsonb :damage_points
end

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

criaria uma linha com o armazenamento de dados de pontos de dano como json. A única coisa a observar é que, embora seus dados de entrada tenham símbolos como chaves nos hashes, ao buscar no banco de dados, você sempre obterá strings de volta como chaves.