2009-12-10 4 views
1

J'ai un tableau avec 2 types d'objets différents. Tous ont des propriétés similaires, comme évaluations/title etc ...Ruby sort_by help Attribut d'objet imprévisible

Un exemple est:

array = array.sort_by { |o| [o.type1.rating] }

Parfois, le tableau a deux types d'objets type1 et type2 est-il possible de trier les deux en utilisant la méthode sort_by?

Répondre

1

vous pouvez utiliser une métaprogrammation pour cela:

array = array.sort_by { |o| o.respond_to?(:type1) ? [o.type1.rating] : [o.type2.rating] } 

Cela devrait faire l'affaire.

0

Vous pouvez également écrire quelque chose comme ça

array.sort_by{ |arr| [arr.type1.present? ? arr.type1.rating : arr.type2.rating] }