145 votes

Trier un tableau d'objets en Ruby par attribut d'objet ?

J'ai un tableau d'objets en Ruby on Rails. Je veux trier le tableau par un attribut de l'objet. Est-ce possible ?

12voto

Noah Davis Points 959

Plus d'élégance objects.sort_by(&:attribute) vous pouvez ajouter un .reverse si vous devez changer l'ordre.

10voto

Curt Sampson Points 10866

Array#sort fonctionne bien, comme indiqué ci-dessus :

myarray.sort! { |a, b|  a.attribute <=> b.attribute }

MAIS, vous devez vous assurer que les <=> est mis en œuvre pour cet attribut. S'il s'agit d'un type de données natif de Ruby, ce n'est pas un problème. Sinon, écrivez votre propre implémentation qui renvoie -1 si a < b, 0 s'ils sont égaux et 1 si a > b.

-2voto

John Nolan Points 16633

-2voto

Harisankar P S Points 1
@model_name.sort! { |a,b| a.attribute <=> b.attribute }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X