Hello,
Visiblement tu ne veux pas trier en fonction d'un attribut du model vote, mais simplement en fonction du nombre de votes.
Dans ce cas, le plus simple est de définir un "counter cache" sur ton model idée. Il s'agit d'un champ en base de donnée qui se mettra automatiquement à jour à chaque nouveau vote.
Puis dans ton model Vote :
Il te faudra peut être mettre à jour tes compteurs si tu as déjà beaucoup d'entrée en base. La méthode "reset_counters" est faite pour ça.
Plus d'infos dispo ici : http://yerb.net/blog/2014/03/13/three-easy-steps-to-using-counter-caches-in-rails/
Enfin, tu n'es pas obligé d'utiliser la méthode order (qui ne s'applique sur sur un champ en base de donnée) pour trier tes colonnes. Si tu veux trier par attributs virtuels ou par retour de fonction, tu peux revoir le code du controller pour quelque chose comme ça :
En espérant que ça aide :)