sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo usar Rails con el nombre de la columna en mayúsculas?

Este no es un problema de ActiveRecord o AREL, así es como funciona la distinción entre mayúsculas y minúsculas en SQL y PostgreSQL.

Los identificadores en SQL (como los nombres de tablas y columnas) no distinguen entre mayúsculas y minúsculas a menos que estén entre comillas. SQL estándar dice que los identificadores sin comillas se doblan a mayúsculas, PostgreSQL los dobla a minúsculas, por lo tanto, bar.maxusers en el mensaje de error.

La solución es citar el nombre de la columna infractora:

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

Tenga en cuenta que debe usar comillas dobles para citar el identificador, ya que las comillas simples son solo para cadenas literales. También tenga en cuenta que las comillas de identificadores son específicas de la base de datos:SQL estándar y PostgreSQL usan comillas dobles, MySQL usa acentos graves, SQL Server usa corchetes, ...