Mes excuses si cela a été répondu avant ou est évident ... fait quelques recherches ici et sur le Goog et n'a pas pu trouver une réponse.Trier les objets par des valeurs booléennes dans Ruby
Je cherche à trier un tableau de fournisseurs par prix et si elles sont un preferred_provider? (Vrai ou faux)
Par exemple, dans array p of Providers
...
p1.price == 1, p1.preferred_provider? == false
p2.price == 2, p2.preferred_provider? == true
p2.price == 3, p3.preferred_provider? == true
Je voudrais p.sort_by et obtenir:
[p2 p3 p1]
IAW
p.sort_by {|x| x.preferred_provider?, x.price }
ne le fait pas travailler et obtient ...
undefined method `<=>' for false:FalseClass
Des suggestions sur de meilleures façons d'aborder ce problème?
En fait, vous aviez presque: p.sort_by {| x | [x.preferred_provider? ? 0: 1, x.prix]}. –
Ah ... sympa. candidat refactoring. Merci. –