Nicolas Blanco wrote:
> La méthode "size" sur une relation du type has_many est pratique dans
> le cas où la relation possède un counter_cache (elle lira le
> counter_cache). Tandis que la méthode "count" exécutera une requête
> SQL COUNT même en présence d'un counter_cache.
>
> Nicolas
>

Plus précisemment pour Rails 2 je recommande :
http://rhnh.net/2007/09/26/counting-activerecord-associations-count-size-or-length
http://blog.hasmanythrough.com/2008/2/27/count-length-size

Pour Rails 3, le comportement semble être le même d'après cet article
http://breakthebit.org/post/3487560245/rails-3-arel-count-size-length-weirdness
:

.count #=> this always triggers a SELECT COUNT(*) on the database
.size #=> if the collection has been loaded, defers to
Enumerable#size, else does the SELECT COUNT(*)
.length #=> always loads the collection and then defers to
Enumerable#size

(au bug près du SQL pour #count (et donc utilisé par #size si
l'association n'est pas chargée) qui ne prend pas en compte si on
demande une limite ou non, mais qui semble-t-il est corrigé, peut-être
depuis Rails 3.0.6.)

-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]

Répondre à