如何覆盖:has_many中定义的顺序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何覆盖:has_many中定义的顺序相关的知识,希望对你有一定的参考价值。
我有
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
答案
使用reorder:
Authors.books.reorder('name DESC')
另一答案
.reorder()
在Rails 3.0.3中被弃用,有利于.except(:order).order()
所以使用这个:
Authors.books.except(:order).order('name DESC')
另一答案
Author.first.books.reverse_order
以上是关于如何覆盖:has_many中定义的顺序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ruby on Rails 中通过关联订购 has_many?