Rails gourous: Je viens de découvrir named_scope
grâce à un autre utilisateur SO. :)Utilisation de named_scope pour obtenir le nombre de lignes
J'aimerais obtenir le nombre d'un ensemble de lignes, c'est-à-dire un SELECT COUNT(*)
. De plus, je veux toujours pouvoir chaîner des étendues nommées dans l'appel.
Est-ce un usage légitime (quoique bizarre) de portée nommée?
named_scope :count, :select => "COUNT(*) as count_all"
Alors je peux le faire (par exemple):
@foobar = Foobar.count.scope.scope.scope
Le compte est accessible via @foobar.first.count_all
.
(modifié pour répondre aux commentaires de Allan)
Vous pouvez faire:
@foobar = Foobar.scope.scope.scope.size
Mais cela causerait une requête de résultat et non la plus rapide requête SELECT COUNT(*)
. J'ai une grande quantité de lignes dans la base de données que j'interroge.
Y a-t-il une meilleure façon de procéder?
Duh. Parfois, les choses sont si faciles dans les rails que l'évidence me manque. Merci! – unknownuser
S'il vous plaît corrigez-moi si je suis usé mais cela ne semble pas fonctionner si votre portée nommée ressemble à ceci: def self.with_full_name select ("users. *, CONCAT (prénom, nom de famille) AS full_name") fin –