如何覆盖:has_many中定义的顺序

时间:2010-11-17 06:41:47

标签: ruby-on-rails activerecord arel

我有

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

3 个答案:

答案 0 :(得分:91)

使用reorder

Authors.books.reorder('name DESC')

答案 1 :(得分:35)

Rails 3.0.3中已弃用

.reorder(),而支持.except(:order).order()

所以使用这个:

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

答案 2 :(得分:-1)

Author.first.books.reverse_order