之间有什么区别吗?
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"
答案 0 :(得分:4)
我也遇到了这个问题。此更改已在 this commit 中引入。像
这样的一行User.count
现在会抛出ActiveRecord::StatementInvalid
错误,因为它会在Postgres上生成SELECT COUNT() FROM users
。截至此提交,修复方法是将代码更新为
User.count(:all)
This commit 恢复之前存在的功能,使用:all
作为“列”传递给ARel,从而导致有效的SQL查询SELECT COUNT(*) FROM users
。
我的Gemfile
最初有以下(如评论中所述)
gem "rails", github: "rails/rails", branch: "4-0-stable"
但是我需要运行bundle update rails
来下拉上面引用的新提交。
答案 1 :(得分:0)
我猜他们之间没有区别
http://apidock.com/rails/ActiveRecord/Calculations/count http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-count
如果没有将任何参数传递给count,它将返回模型的所有行的计数。