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]
