PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como usar o Rails com o nome da coluna em maiúsculas?


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, ...