in my rails app I\'m creating an array like so:
@messages.each do |message|
@list << {
:id => message.id,
:title => message.title,
:ti
You can also do @list.sort_by { |message| message.time_ago }
Yes, you can use group_by :
http://api.rubyonrails.org/classes/Enumerable.html#method-i-group_by
You could do:
@list.sort {|a, b| a[:time_ago] <=> b[:time_ago]}
Just FYI, I don't see the point in moving the messages into a new list and then sorting them. As long as it is ActiveRecord it should be done directly when querying the database in my opinion.
It looks like you should be able to do it like this:
@messages = Message.includes(:replies).order("replies.created_at ASC")
That should be enough unless I have misunderstood the purpose.
In rails 4+
@list.sort_by(&:time_ago)
@list.sort_by{|e| e[:time_ago]}
it defaults to ASC, however if you wanted DESC you can do:
@list.sort_by{|e| -e[:time_ago]}
Also it seems like you are trying to build the list from @messages
. You can simply do:
@list = @messages.map{|m|
{:id => m.id, :title => m.title, :time_ago => m.replies.first.created_at }
}