rails difference between Model.count and Model.count(:all)

ruby-on-rails, ruby-on-rails-4

Solution

I ran into this issue as well. The change was introduced in this commit. A line like

User.count

will now throw an `ActiveRecord::StatementInvalid` error since it will generate `SELECT COUNT() FROM users` on Postgres. As of this commit, the fix is to update your code to

User.count(:all)

This commit restores the functionality that existed previously, using `:all` as the "column" to pass on to ARel, causing a valid SQL query `SELECT COUNT(*) FROM users`.

My `Gemfile` originally had the following (as mentioned in the comments)

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

but I needed to run `bundle update rails` to pull down the newer commit referenced above.

Problem

Is there any difference between ``` User.count ``` and ``` User.count(:all) ``` I upgraded rails to 4.0 then when I use `ModelName.count(:all)` it's working well but if I use `ModelName.count` the following error occurs.By the way bot of them is working well in 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" ```

Original source