Rails, Ruby, ¿cómo ordenar un Array?

En mi aplicación Rails estoy creando una matriz como esta:

@messages.each do |message| @list < message.id, :title => message.title, :time_ago => message.replies.first.created_at } end 

Después de hacer esta matriz, me gustaría clasificarla por orden ASC de tiempo_ago, ¿es posible?

  @list.sort_by{|e| e[:time_ago]} 

El valor predeterminado es ASC, sin embargo, si deseaba DESC, puede hacer:

  @list.sort_by{|e| -e[:time_ago]} 

También parece que estás intentando construir la lista a partir de @messages . Simplemente puedes hacer:

 @list = @messages.map{|m| {:id => m.id, :title => m.title, :time_ago => m.replies.first.created_at } } 

Podrías hacerlo:

 @list.sort {|a, b| a[:time_ago] <=> b[:time_ago]} 

También puedes hacer @list.sort_by { |message| message.time_ago } @list.sort_by { |message| message.time_ago }

En Rails 4+

 @list.sort_by(&:time_ago) 

Solo para tu información, no veo el punto de mover los mensajes a una nueva lista y luego ordenarlos. Siempre y cuando sea ActiveRecord, debería hacerse directamente al consultar la base de datos en mi opinión.

Parece que deberías poder hacerlo así:

 @messages = Message.includes(:replies).order("replies.created_at ASC") 

Eso debería ser suficiente a menos que haya entendido mal el propósito.