sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur använder man Rails med versaler kolumnnamn?

Det här är inte ett ActiveRecord- eller AREL-problem, det är bara så här skiftlägeskänslighet fungerar i SQL och PostgreSQL.

Identifierare i SQL (som tabell- och kolumnnamn) är skiftlägesokänsliga om de inte är citerade. Standard SQL säger att identifierare utan citattecken viks till versaler, PostgreSQL viker dem till gemener, därav bar.maxusers i felmeddelandet.

Lösningen är att citera det stötande kolumnnamnet:

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

Observera att du måste använda dubbla citattecken för att citera identifieraren eftersom enstaka citattecken endast är för bokstavliga strängar. Observera också att identifieringscitat är databasspecifik:standard SQL och PostgreSQL använder dubbla citattecken, MySQL använder backticks, SQL Server använder parenteser, ...




  1. lagra flera kryssrutor i databasen med php och mysql

  2. Snabbaste sättet att ta bort icke-numeriska tecken från en VARCHAR i SQL Server

  3. gör ett ID i en mysql-tabell auto_increment (i efterhand)

  4. MySQL COUNT med LIMIT