Když používáte postgres, máte štěstí:postgres má nativní json typ. To je mnohem lepší než použití serializace k ukládání dat jako nějaké formy kódovaného řetězce, protože postgres má bohatou rodinu operátorů, které vám umožňují dotazovat se na tato data json.
Pokud používáte postgres 9.4, můžete také použít typ jsonb. To je obecně lepší, protože ukládá zpracovanou verzi dat (tj. nemusí data znovu a znovu upravovat) a umožňuje indexování.
Rails to podporuje hned po vybalení (viz zde ), stačí přidat sloupec typu json(b). Pokud vaše migrace obsahuje
create_table :damages do |t|
t.string :description
t.jsonb :damage_points
end
pak
Damage.create(damage_points: [{left: 40, top: 99}, {left: 100, top: 35}])
by vytvořil řádek s datovým úložištěm bodů poškození jako json. Jediná věc, na kterou je třeba dávat pozor, je, že ačkoli vaše vstupní data obsahují jako klíče v hashe symboly, při načítání z databáze vždy dostanete řetězce zpět jako klíče.