PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie verwende ich Rails mit Spaltennamen in Großbuchstaben?

Dies ist kein ActiveRecord- oder AREL-Problem, so funktioniert die Berücksichtigung der Groß-/Kleinschreibung in SQL und PostgreSQL.

Bei Bezeichnern in SQL (z. B. Tabellen- und Spaltennamen) wird die Groß-/Kleinschreibung nicht beachtet, es sei denn, sie werden in Anführungszeichen gesetzt. Standard-SQL sagt, dass Bezeichner ohne Anführungszeichen in Großbuchstaben umgewandelt werden, PostgreSQL faltet sie in Kleinbuchstaben, daher bar.maxusers in der Fehlermeldung.

Die Lösung besteht darin, den problematischen Spaltennamen in Anführungszeichen zu setzen:

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

Beachten Sie, dass Sie zum Zitieren des Bezeichners doppelte Anführungszeichen verwenden müssen, da einfache Anführungszeichen nur für Zeichenfolgenliterale verwendet werden. Beachten Sie auch, dass das Zitieren von Bezeichnern datenbankspezifisch ist:Standard-SQL und PostgreSQL verwenden doppelte Anführungszeichen, MySQL verwendet Backticks, SQL Server verwendet Klammern, ...