To nie jest problem ActiveRecord ani AREL, tak właśnie działa rozróżnianie wielkości liter w SQL i PostgreSQL.
Identyfikatory w SQL (takie jak nazwy tabel i kolumn) nie uwzględniają wielkości liter, chyba że są cytowane. Standardowy SQL mówi, że niecytowane identyfikatory są zwijane do wielkich liter, PostgreSQL zwija je do małych liter, stąd bar.maxusers
w komunikacie o błędzie.
Rozwiązaniem jest zacytowanie obraźliwej nazwy kolumny:
.having('COUNT(foo.id) > bar."maxUsers"')
Zauważ, że musisz użyć podwójnych cudzysłowów do cytowania identyfikatora, ponieważ pojedyncze cudzysłowy dotyczą tylko literałów łańcuchowych. Należy również zauważyć, że cytowanie identyfikatora jest specyficzne dla bazy danych:standardowe SQL i PostgreSQL używają podwójnych cudzysłowów, MySQL używa backticków, SQL Server używa nawiasów, ...