sql >> Database teknologi >  >> RDS >> PostgreSQL

Undgå PG::InvalidTextRepresentation-fejl ved brug af Postgres UUID i Rails

Du kan tilføje en routing-begrænsning til flere ruter ad gangen via constraints() do ... end .

Jeg endte med at gøre dette og sætte en global begrænsning på alle :id params for at matche det med et 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

På denne måde matcher /posts/123 eller /posts/foobar ikke længere /posts/:id og 404, før de nogensinde påkalder controllerhandlingen, og dermed undgås PG-typefejlen.

Alle mine modeller vil bruge UUID til deres ID'er, så dette er rent og TØRT. Hvis jeg også havde nogle modeller med heltals-id'er, ville det være lidt mindre rent.



  1. MySQL LOG2() Funktion – Returner base-2 logaritmen for en værdi

  2. SQL Server fjerner millisekunder fra datetime

  3. Java MYSQL/JDBC-forespørgsel returnerer forældede data fra cachelagret forbindelse

  4. Sådan konfigureres SELinux til PostgreSQL og TimescaleDB