Просто используйте

я есть массив объектов

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

мне нужно, чтобы массив был отсортирован по времени, а затем по Val

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

но использование sort_by выдает ошибку, потому что время равно нулю.

Я использую некрасивый способ сортировки прямо сейчас, но я уверен, что есть хороший способ сделать это

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

Ответы на вопрос(2)

Ваш ответ на вопрос