How to override :order defined in a has_many

Christopher picture Christopher · Nov 17, 2010 · Viewed 11k times · Source

I have

class Authors 
has_many :books, :order => 'name ASC'

I am trying to query all the books sorted by name DESC

Authors.books.order('name DESC')

but the result is

SELECT * FROM .... ORDER BY name ASC, name DESC

and the results come back with the name sorted ASC

is there a way to remove the original order in the association or override it? Or is specifying an order in a relation a bad idea?

using Rails 3.0.3

Answer

Ariejan picture Ariejan · Nov 17, 2010

Use reorder:

Authors.books.reorder('name DESC')