2009-12-10 118 views
1

我有一个数组与2种不同类型的对象。它们都具有相似的特性,像收视率/标题等等红宝石sort_by帮助不可预知的对象属性

一个例子是:

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

有时数组有2对象类型Type1和Type2有什么办法来排序他们两人使用sort_by方法?

回答

1

你可以使用一些这方面的元编程:

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

这应该做的伎俩。

0

你也可以写这样的事情

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