11

有没有区别

User.count 

User.count(:all)

我将rails升级到4.0,然后当我使用ModelName.count(:all)它时运行良好,但如果我使用ModelName.count会出现以下错误。顺便说一下,它们的bot在rails 3.2中运行良好

SELECT COUNT() FROM "users"
PG::WrongObjectType: ERROR:  count(*) must be used to call a parameterless aggregate function
LINE 1: SELECT COUNT() FROM "users"
4

2 回答 2

7

我也遇到了这个问题。此提交中引入了更改。像一条线

User.count

现在会抛出一个ActiveRecord::StatementInvalid错误,因为它将SELECT COUNT() FROM users在 Postgres 上生成。截至本次提交,修复是将您的代码更新为

User.count(:all)

此提交恢复了以前存在的功能,:all用作传递给 ARel 的“列”,从而导致有效的 SQL 查询SELECT COUNT(*) FROM users

Gemfile最初有以下内容(如评论中所述)

gem "rails", github: "rails/rails", branch: "4-0-stable"

但我需要运行bundle update rails以拉下上面引用的较新提交。

于 2013-09-06T16:21:32.810 回答
0

我想他们之间没有区别

http://apidock.com/rails/ActiveRecord/Calculations/count http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-count

通过不向 count 传递任何参数,它将返回模型所有行的计数。

于 2013-08-21T09:25:32.027 回答