我的控制器中有一个简单的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订单丢失了。 是否有任何工作要做。
答案 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')