2013-08-15 14 views
8

Czy jest jakaś różnica międzyszyn różnicę między Model.count i Model.count (: all)

User.count 

i

User.count(:all) 

uaktualnieniu szyny do 4,0 wtedy, gdy używam ModelName.count(:all) to działa dobrze ale jeśli użyję ModelName.count, pojawi się następujący błąd. W ten sposób bot z nich działa dobrze w szynach 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" 
+1

Nie mam takiego błędu w Rails4 przy użyciu Model.count. W twoim przykładzie jest dziwne, że próbuje wykonać select count() insteand of select count (*). Czy wypróbowałeś User.all.count? –

+0

Wynik: SELECT COUNT() FROM "users" PG :: WrongObjectType: BŁĄD: liczba (*) musi być użyta do wywołania funkcji agregacji bez parametrów LINIA 1: WYBIERZ LICZBĘ() Z "użytkowników" –

+0

i co robi użytkownik końcowy .wszystko? –

Odpowiedz

4

Pobiegłem do tej kwestii, jak również. Zmiana została wprowadzona w this commit. Linia jak

User.count 

będą teraz rzucać błąd ActiveRecord::StatementInvalid ponieważ będzie generować SELECT COUNT() FROM users na PostgreSQL. Jak tego dokonać, poprawka jest uaktualnienie kodu do

User.count(:all) 

This commit przywraca funkcjonalność, która istniała wcześniej, korzystając :all jako „kolumny”, aby przekazać AREL, powodując poprawne zapytanie SQL SELECT COUNT(*) FROM users.

My Gemfile pierwotnie miała następujący (jak wspomniano w komentarzach)

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

ale potrzebne do uruchomienia bundle update rails ciągnąć w dół nowsze commit mowa powyżej.

Powiązane problemy