Ruby sort_by帮助不可预测的对象属性

时间:2009-12-10 23:02:42

标签: ruby sorting

我有一个包含2种不同类型对象的数组。他们都有类似的属性,如评级/标题等......

一个例子是:

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

有时数组有2个对象类型type1和type2有没有办法用sort_by方法对它们进行排序?

2 个答案:

答案 0 :(得分:1)

你可以使用一些元编程:

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

这应该可以解决问题。

答案 1 :(得分:0)

你也可以写这样的东西

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