7
votes

Rails: Commandez par la somme de deux colonnes

Donc, j'ai un modèle photo qui peut être téléchargé sur FULL_SIZE et présentation_size . Lorsqu'un utilisateur télécharge une photo, je suivez cela sur la photo FULL_DODOLLOADS et présentation_downloads attribut.

C'est tout bon.

Parfois je veux savoir Combien de téléchargements totaux il y a eu. J'ai une méthode simple, total_downloads qui ressemble à: xxx

ma question est la suivante: je voudrais être capable de commander des photos par tous les trois (complète, présentation, téléchargements totaux). Les deux premiers sont faciles, mais comment faites-vous une commande par la somme de deux colonnes? Notez que cela doit être à la fois compatible SQLite et PG au minimum.

une question secondaire, serait-il plus rapide de rendre la méthode totale_downloads une requête, et si oui quel est le meilleur moyen écrire ça? Je sais que la somme sur la classe, vous pouvez appeler photo.sum (...) , mais je ne sais pas comment faire cela pour deux colonnes sur un seul enregistrement.

Merci!


2 commentaires

Seriez-vous bien d'écrire le SQL directement ou serait-ce un problème?


@Devin M - Je ferai ce que je dois faire :)


3 Réponses :


3
votes

photo.order ('Full_Downloads + présentation_downloads Desc')

Cela serait certainement beaucoup plus rapide que de faire le tri dans Ruby.


0 commentaires

19
votes

Vous pouvez essayer ceci:

SELECT "photos".* FROM "photos" ORDER BY full_downloads + presentation_downloads


0 commentaires

0
votes

Vous devrez maintenant avoir à ajouter photo.order (arel.sql ('Full_Downloads + présentation_downloads')) Pour éviter ERREUR INFLABNOPNATRIBUEREFERENCE


0 commentaires