11

間に違いはありますか

User.count 

User.count(:all)

Railsを4.0にアップグレードして使っModelName.count(:all)てみるとうまく動いているのですが、使っModelName.countてみると以下のようなエラーが出てしまいます。

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

PostgresActiveRecord::StatementInvalidで生成されるため、エラーがスローされるようになりました。SELECT COUNT() FROM usersこのコミットの時点で、修正はコードを次のように更新することです

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 に答える