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

Come utilizzare Rails con il nome della colonna in maiuscolo?

Questo non è un problema di ActiveRecord o AREL, è così che funziona la distinzione tra maiuscole e minuscole in SQL e PostgreSQL.

Gli identificatori in SQL (come i nomi di tabelle e colonne) non fanno distinzione tra maiuscole e minuscole a meno che non siano tra virgolette. L'SQL standard dice che gli identificatori senza virgolette sono piegati in maiuscolo, PostgreSQL li piega in minuscolo, quindi bar.maxusers nel messaggio di errore.

La soluzione è citare il nome della colonna incriminata:

.having('COUNT(foo.id) > bar."maxUsers"')

Si noti che è necessario utilizzare le virgolette doppie per citare l'identificatore poiché le virgolette singole sono solo per le stringhe letterali. Si noti inoltre che le virgolette dell'identificatore sono specifiche del database:SQL standard e PostgreSQL utilizzano virgolette doppie, MySQL utilizza backtick, SQL Server utilizza parentesi, ...