Rails包括订购而不是ID

时间:2016-12-26 05:12:11

标签: ruby-on-rails

我的控制器中有一个简单的include语句,但默认情况下,包含的表的顺序是id。 在我的情况下,我需要以与收到uuid相同的方式订购元素。

查询:

compare_uuids = {xyz, ytb, tyd}
@books = Book.where(uuid: compare_uuids).includes(:venue, :related_publisher, :related_author) 

上面的表达式响应很好但是说如果用他们的id的uuid排序是:

id     uuid
5      xyz
1      ytb
2      tyd

语句运行时组成的表达式按id排序。所以uuid订单丢失了。 是否有任何工作要做。

1 个答案:

答案 0 :(得分:0)

试试这个......

has_many :books, :order => 'priority DESC'

在rails 4中,现在不推荐使用,新方法将是

has_many :books, -> { order(:priority => :desc) }

获取输出:

你可以尝试

Authors.books.except(:order).order('priority DESC')
# OR
Authors.books.reorder('priority DESC')