acts_as_commentable: find Post by date of comment

Hello,

I am using acts_as_commentable (related to Post) and I would like to know how to get the list the posts ordered by date of comment (i.e. post with recent comment first).

in addition if a post has no comment, i would it to be inserted based on its creation date.

Thanks for your help

Nicolas

Here's how I did it last night after about an hour of googling the shit out of it and coming up empty.

# First I load all the messages @messages = Message.all

# Then I loop through them all, and if a message has a comment, # I change the message's created_at field to the comments created_at @messages.each do |message|   comment = message.comments.find(:first, :order => 'created_at DESC')   message.created_at = comment.created_at unless comment.blank? end

# Then I sort the messages by their (new) created_at dates, which don't # get saved so they don't overwrite their real created_at fields. @messages.sort! { |b,a| a.created_at <=> b.created_at }

# Then I take the top 5 to use in my dashboard view. @messages = @messages[0..4]

This works regardless of whether a Message (or Post in your case) has any comments. This looks a little hackish to me, so please, Rails gurus, have at it.

Hope this helps! Morgan Currie

Hi, it works fine witn ruby 2.x?? I'm very interested.

I read the it doesn´t work with this version, see this comments:

http://agilewebdevelopment.com/plugins/acts_as_commentable

and I´m using rails 2.0.2

The Ruby on Rails web application framework has built up a tremendous head of steam over the last year. Fueled by some significant benefits and an impressive portfolio of real-world applications already in production, Rails is destined to continue making significant inroads in 2006. Simply put, Ruby on Rails is an open source tool that gives you the advantage of rapidly creating great web applications backed by SQL databases to keep up with the speed of the web.

Message.all.sort_by { |m| m.comments.blank? ? m.created_at : m.comments.last.created_at }[0..4]