これはActiveRecordやARELの問題ではなく、SQLとPostgreSQLで大文字と小文字を区別する方法です。
SQLの識別子(テーブル名や列名など)は、引用符で囲まれていない限り、大文字と小文字は区別されません。標準SQLによると、引用符で囲まれていない識別子は大文字に折りたたまれ、PostgreSQLは小文字に折りたたまれるため、bar.maxusers
エラーメッセージで。
解決策は、問題のある列名を引用することです:
.having('COUNT(foo.id) > bar."maxUsers"')
一重引用符は文字列リテラル専用であるため、識別子を引用する場合は二重引用符を使用する必要があることに注意してください。また、識別子の引用符はデータベース固有であることに注意してください。標準のSQLとPostgreSQLは二重引用符を使用し、MySQLはバッククォートを使用し、SQLServerは角かっこを使用します...