首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用大写列名的Rails?

如何使用大写列名的Rails?
EN

Stack Overflow用户
提问于 2018-08-24 05:40:02
回答 1查看 1.3K关注 0票数 6

作为AR查询的一部分,我有以下内容:

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

这会生成一个错误:

ActiveRecord::StatementInvalid:
       PG::UndefinedColumn: ERROR:  column bar.maxusers does not exist
                                                                    ^
       HINT:  Perhaps you meant to reference the column "bar.maxUsers".

我引用的是列bar.maxUsers

因此,很明显,AR降低了查询的大小写。如何抑制这种行为?

Rails 4.2.10

PostgreSQL

编辑: SQL:

SELECT ... HAVING COUNT(foo.id) > bar.maxUsers

因此,这是在to_sql之后发生的。也许是从execute

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 06:01:34

这不是ActiveRecord或AREL的问题,这只是在SQL和PostgreSQL中区分大小写的方式。

SQL中的标识符(如表名和列名)是不区分大小写的,除非用引号引起来。标准SQL表示未加引号的标识符被折叠成大写,而PostgreSQL将它们折叠成小写,因此错误消息中出现了bar.maxusers

解决方案是引用有问题的列名:

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

请注意,您必须使用双引号来引用标识符,因为单引号仅用于字符串文字。还要注意,标识符引用是特定于数据库的:标准SQL和PostgreSQL使用双引号,MySQL使用反引号,SQL Server使用方括号,...

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51994652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档