Sorting a has_many collection


#1

Can’t quite figure this one,

I have a School (has_many reviews) and a Review (belongs_to school).

I’m rendering my reviews per school like this “@School.reviews

Which renders the “_review.html.erb” multiple times for reviews of that
school (works a treat).

But how do I control the order in which these are displayed (I’d like to
reverse them basically most recent on top).

bb.


#2

this should work:
@school.reviews.sort_by { |cc| - cc.updated_at.to_i }


#3

class School < AR
has_many :reviews, :order => ‘created_at DESC’
end

class Review < AR
belongs_to :school
end

If you use @school.reviews you’ll get the desired effect…

MaD
escribió:> this should work:


#4

That’s ideal! thanks.

Follow up question, what if I want to override this order from time to
time, say on some occasions have the reviews sorted by their last_name
column?


#5

Bob,

You could also render it with jquery or some javascript library that
enables you to write the set of reviews once to javascript and present
and re-present in multiple ways as needed without more roundtrips to
the server.

Al


#6

You could use named_scope to get more complexity. I think that’s a
possibility.

http://www.locomotivation.com/blog/2008/08/25/simplify-activerecord-aggregates-and-other-goodies-via-named-scope.html

bingo bob escribió: