Ponieważ korzystasz z postgresa, masz szczęście:postgres ma natywny json rodzaj. Jest to o wiele lepsze niż używanie serializacji do przechowywania danych jako jakiejś formy zakodowanego ciągu, ponieważ postgres ma bogatą rodzinę operatorów, które umożliwiają wykonywanie zapytań dotyczących tych danych json.
Jeśli używasz postgres 9.4, możesz również użyć typu jsonb. Jest to generalnie lepsze, ponieważ przechowuje przetworzoną wersję danych (tzn. nie musi powtarzać ponownej analizy danych w kółko) i umożliwia indeksowanie.
Railsy obsługują to po wyjęciu z pudełka (zobacz tutaj ), wystarczy dodać kolumnę typu json(b). Jeśli migracja zawiera
create_table :damages do |t|
t.string :description
t.jsonb :damage_points
end
następnie
Damage.create(damage_points: [{left: 40, top: 99}, {left: 100, top: 35}])
utworzy wiersz z magazynem danych punktów uszkodzeń jako json. Jedyną rzeczą, na którą należy zwrócić uwagę, jest to, że chociaż dane wejściowe mają symbole jako klucze w hashach, podczas pobierania z bazy danych zawsze otrzymasz ciągi jako klucze.