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

问题描述 投票:42回答:3

我有

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

ruby-on-rails activerecord arel
3个回答
90
投票

使用reorder

Authors.books.reorder('name DESC')

35
投票

.reorder()在Rails 3.0.3中被弃用,有利于.except(:order).order()

所以使用这个:

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

-1
投票
Author.first.books.reverse_order
© www.soinside.com 2019 - 2024. All rights reserved.