När du använder postgres har du tur:postgres har en inbyggd json typ. Det här är mycket bättre än att använda serialisera för att lagra data som någon form av kodad sträng, eftersom postgres har en rik familj av operatörer som låter dig fråga efter den json-datan.
Om du använder postgres 9.4 kan du också använda jsonb-typen. Detta är generellt sett bättre eftersom det lagrar en bearbetad version av data (dvs. det behöver inte fortsätta reparera data om och om igen) och det tillåter index.
Rails stöder detta direkt (se här ), behöver du bara lägga till en kolumn av typen json(b). Om din migrering innehåller
create_table :damages do |t|
t.string :description
t.jsonb :damage_points
end
sedan
Damage.create(damage_points: [{left: 40, top: 99}, {left: 100, top: 35}])
skulle skapa en rad med skadepoängdatalagret som json. Det enda du bör se upp med är att även om din indata har symboler som nycklar i hasharna, kommer du alltid att få tillbaka strängar som nycklar när du hämtar från databasen.