PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ein Schienenfeld, das ein Array von JSON-Objekten ist?

Wenn Sie Postgres verwenden, haben Sie Glück:Postgres hat einen nativen json Typ. Dies ist viel besser als die Verwendung von Serialize zum Speichern der Daten als eine Art codierter String, da Postgres über eine umfangreiche Familie von Operatoren verfügt, mit denen Sie diese JSON-Daten abfragen können.

Wenn Sie postgres 9.4 verwenden, können Sie auch den Typ jsonb verwenden. Dies ist im Allgemeinen besser, da es eine verarbeitete Version der Daten speichert (d. h. es muss die Daten nicht immer wieder neu parsen) und Indizes zulässt.

Rails unterstützt dies standardmäßig (siehe hier ). ), müssen Sie nur eine Spalte vom Typ json(b) hinzufügen. Wenn Ihre Migration

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

dann

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

würde eine Zeile mit dem Datenspeicher der Schadenspunkte als json erstellen. Das Einzige, worauf Sie achten müssen, ist, dass Ihre Eingabedaten zwar Symbole als Schlüssel in den Hashes enthalten, Sie beim Abrufen aus der Datenbank jedoch immer Zeichenfolgen als Schlüssel zurückerhalten.