web-dev-qa-db-ja.com

has_manyで定義された:orderをオーバーライドする方法

私が持っています

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

名前DESCでソートされたすべての本を照会しようとしています

Authors.books.order('name DESC')

しかし、結果は

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

結果はASCでソートされた名前で返されます

アソシエーションの元の順序を削除したり、上書きしたりする方法はありますか?または、リレーションで順序を指定するのは悪い考えですか?

使用Rails 3.0.3

43
Christopher

使用 並べ替え

Authors.books.reorder('name DESC')
95
Ariejan

.reorder()はRails 3.0.3で非推奨になり、.except(:order).order()が優先されます。

したがって、これを使用してください:

Authors.books.except(:order).order('name DESC')
35
Jon