By the way, personne l'a dit, mais je trouve l'algorithme de rank vraiment nice. +1

Petit nitpick par contre, tu gsub à l'intérieur du lambda. Ça fait en sorte que tu clean la query à chaque call du lambda, puisque la query va être executé à chaque page load pratiquement, c'est un low hanging fruit.