首页 > 解决方案 > Rails5.2 - Active Record .select() 在调用 .count 时导致错误

问题描述

如何将另一列添加到范围并仍然能够调用 .count、.find、.where 等。

 User.all.select('users.*,"one" as one').count

结果:

  (1.3ms)  SELECT COUNT(users.*,"one" as one) FROM "users"
Traceback (most recent call last):
        1: from (irb):7
ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR:  syntax error at or near "as")
LINE 1: SELECT COUNT(users.*,"one" as one) FROM "users"
                                   ^
: SELECT COUNT(users.*,"one" as one) FROM "users"

标签: ruby-on-railspostgresqlactiverecordruby-on-rails-5.2

解决方案


 User.all.select('users.*,"one" as one').count(:all)

 User.all.select('users.*,"one" as one').count(:id)

两者都有效,因为它指定了 SQL 代码应该依赖的内容。


推荐阅读