Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails Model.count和Model.count之间的差异(:all)_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails rails Model.count和Model.count之间的差异(:all)

Ruby on rails rails Model.count和Model.count之间的差异(:all),ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,两者之间有什么区别吗 User.count 及 我将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 fu

两者之间有什么区别吗

User.count 

我将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"

我想他们之间没有区别

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


我也遇到了这个问题。此更改是在中引入的。线条

User.count
现在将抛出一个
ActiveRecord::StatementInvalid
错误,因为它将从Postgres上的用户生成
SELECT COUNT()。在此提交时,修复程序是将代码更新为

User.count(:all)
恢复以前存在的功能,使用
:all
作为“列”传递给ARel,从而从用户处生成有效的SQL查询
选择计数(*)

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


但是我需要运行
bundle update rails
来下拉上面提到的更新提交。

我在使用Model.count的rails4中没有这样的错误。在您的示例中,奇怪的是它试图执行select count()而不是select count(*)。您是否尝试过User.all.count?结果:必须使用“users”中的SELECT count()PG::ErrorObjectType:ERROR:count(*)调用无参数聚合函数第1行:从“users”中选择count(),以及输出User.all?User.all的功能。结果=>选择“users”。*从“users”我将rails版本从4.0.0-stable更改为4.0.0,然后问题解决了。
User.count(:all)
gem "rails", github: "rails/rails", branch: "4-0-stable"