sql >> Database >  >> RDS >> PostgreSQL

Een rails-veld dat een array van JSON-objecten is?

Omdat je postgres gebruikt, heb je geluk:postgres heeft een native json type. Dit is veel beter dan het gebruik van serialize om de gegevens op te slaan als een of andere vorm van gecodeerde tekenreeks, omdat postgres een rijke familie van operators heeft waarmee u query's op die json-gegevens kunt uitvoeren.

Als u postgres 9.4 gebruikt, kunt u ook het jsonb-type gebruiken. Dit is over het algemeen beter omdat het een verwerkte versie van de gegevens opslaat (d.w.z. het hoeft de gegevens niet steeds opnieuw te analyseren) en het maakt indexen mogelijk.

Rails ondersteunt dit out of the box (zie hier ), hoeft u alleen maar een kolom van het type json(b) toe te voegen. Als uw migratie

. bevat
create_table :damages do |t|
  t.string :description
  t.jsonb :damage_points
end

dan

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

zou een rij maken met de gegevensopslag van schadepunten als json. Het enige waar u op moet letten, is dat hoewel uw invoergegevens symbolen als sleutels in de hashes hebben, u bij het ophalen uit de database altijd strings als sleutels terugkrijgt.



  1. Vervanger voor MySQL-variabelen in PostgreSQL?

  2. Maand en dag aftrekken mysql

  3. Multi-Statement TVF's in Dynamics CRM

  4. Op welke kolom moet de geclusterde index worden geplaatst?