Este não é um problema do ActiveRecord ou AREL, é apenas como a diferenciação de maiúsculas e minúsculas funciona no SQL e no PostgreSQL.
Identificadores em SQL (como nomes de tabelas e colunas) não diferenciam maiúsculas de minúsculas, a menos que estejam entre aspas. O SQL padrão diz que os identificadores sem aspas são dobrados para maiúsculas, o PostgreSQL os dobra para minúsculas, daí o
bar.maxusers
na mensagem de erro. A solução é citar o nome da coluna incorreta:
.having('COUNT(foo.id) > bar."maxUsers"')
Observe que você deve usar aspas duplas para citar o identificador, pois aspas simples são apenas para literais de string. Observe também que a citação de identificador é específica do banco de dados:SQL padrão e PostgreSQL usam aspas duplas, MySQL usa acentos graves, SQL Server usa colchetes, ...