PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Unikaj błędu PG::InvalidTextRepresentation podczas używania UUID Postgresa w Railsach

Możesz dodać ograniczenie routingu do wielu tras jednocześnie za pomocą constraints() do ... end .

Skończyło się na tym, że zrobiłem to i ustawiłem globalne ograniczenie na wszystkie :id parametry, aby dopasować je do wyrażenia regularnego UUID:

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

W ten sposób /posts/123 lub /posts/foobar nie pasują już do /posts/:id i 404 przed wywołaniem akcji kontrolera, co pozwala uniknąć błędu typu PG.

Wszystkie moje modele będą używać identyfikatorów UUID, więc jest to czyste i suche. Gdybym miał kilka modeli z identyfikatorami całkowitymi, byłoby to trochę mniej czyste.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql — Jak wyodrębnić pierwsze wystąpienie podciągu w ciągu za pomocą wzorca wyrażenia regularnego?

  2. Odwoływanie się do zmiennych sesji (\set var='value') z PL/PGSQL

  3. Obliczenia n-tego percentyla w postgresql

  4. Jakiej blokady, jeśli w ogóle, używa 'CREATE TRIGGER' w PostgreSQL 9.4.2?

  5. zaproponuj narzędzie postgres, aby znaleźć różnicę między schematem a danymi