Classificando uma matriz com base em um atributo que pode ser nulo em alguns elementos

Eu tenho uma matriz de objetos

[<#a star=1  val=1>, <#a star=nil val=3> , <#a star=2  val=2>]

Eu preciso que o array seja classificado por tempo e depois por val

[ <#a star=2  val=2>, <#a star=1  val=1>, <#a star=nil val=3> ]

mas usar o sort_by gera um erro porque o tempo é nulo.

Estou usando uma maneira feia de classificar agora, mas tenho certeza de que há uma boa maneira de fazer isso

starred=[]
@answers.each {|a| (starred << a) if a.starred }
@answers=@answers-starred
starred=starred.sort_by {|a| a.starred }.reverse
@answers=starred+@answers

questionAnswers(3)

yourAnswerToTheQuestion