Når du bruger postgres, er du heldig:postgres har en indfødt json type. Dette er langt bedre end at bruge serialize til at gemme dataene som en form for kodet streng, fordi postgres har en rig familie af operatører, der giver dig mulighed for at forespørge mod disse json-data.
Hvis du bruger postgres 9.4, kan du også bruge jsonb-typen. Dette er generelt bedre, da det gemmer en behandlet version af dataene (dvs. det behøver ikke at blive ved med at reparere dataene igen og igen), og det tillader indekser.
Rails understøtter dette direkte (se her ), skal du blot tilføje en kolonne af typen json(b). Hvis din migrering indeholder
create_table :damages do |t|
t.string :description
t.jsonb :damage_points
end
derefter
Damage.create(damage_points: [{left: 40, top: 99}, {left: 100, top: 35}])
ville oprette en række med skadespunkters datalager som json. Det eneste du skal være opmærksom på er, at selvom dine inputdata har symboler som nøgler i hasherne, vil du altid få strenge tilbage som nøgler, når du henter fra databasen.