Rails trucs rapides #4
Sep 20
Dev, Web quick tips, Rails, rubyonrails No Comments
Aujourd’hui, un petit truc simple que Benoit Goyette m’a montré, la méthode count() d’ActiveRecords
J’utilisais jusqu’ici la requête suivante Model.find_by_sql(“SELECT COUNT(column_name) FROM table WHERE= conditions”)
J’étais convaincu que cette méthode simple et directe était la méthode la plus rapide et propre pour faire un count eh bien non bien que cette méthode fonctionne, la fonction count de ActiveRecords est très similaires à celle-ci.
Démonstration:
p=Post.find_by_sql(“SELECT COUNT(*) FROM posts”)
SELECT COUNT(*) FROM posts en 1.4 ms (affichage console)
p=Post.count
SELECT count(*) AS count_all FROM "posts" en 1.4 ms (affichage console)
Bon, je pensais que ma méthode SQL était plus vite que celle d’ActiveRecords, j’crois bien que je me suis trompé!
Les avantages d’utilisé la méthode activeRecords count, c’est que l’on peut utiliser tous les arguments habituels, :conditions, :joins, :group, :from, :select, etc…. et puis en plus, c’est beaucoup plus court à écrire et on aime ça!
Dans le même ordre d’idée, on peut également se servir de la fonction Model.maximum(‘column’)
Exemple:
Post.maximum(‘count_votes’)
SELECT max("posts".count_votes) AS max_count_votes FROM "posts"
va nous retourner le maximum de votes enregistrer sur tous les posts!
Dans cette lignée on retrouve les fonctions Model.minimum, Model.average et Model.sum
Référence

