sql >> Database >  >> RDS >> PostgreSQL

Vermijd PG::InvalidTextRepresentation-fout bij gebruik van Postgres UUID in Rails

U kunt een routeringsbeperking aan meerdere routes tegelijk toevoegen via constraints() do ... end .

Uiteindelijk heb ik dit gedaan en een algemene beperking ingesteld voor alle :id params om het te matchen met een UUID-regexp:

MyApp::Application.routes.draw do
  constraints(id: /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i) do

    # my routes here

  end
end

Op deze manier komen /posts/123 of /posts/foobar niet langer overeen met /posts/:id en 404 voordat de controlleractie ooit wordt aangeroepen, waardoor de PG-typefout wordt vermeden.

Al mijn modellen gebruiken UUID voor hun ID's, dus dit is schoon en DROOG. Als ik ook modellen met integer-ID's had, zou het iets minder schoon zijn.



  1. BESTEL DOOR de IN-waardelijst

  2. Bestand versus database voor opslagefficiëntie in chat-app

  3. Rails .where() query werkt niet

  4. Probleem met MySQL voor Visual Studio/Visual Studio 2017 Datasource Wizard. Objectverwijzing niet ingesteld op een instantie van een object