Pav*_*rno 6 activerecord ruby-on-rails
我有一个使用另一个函数输出的函数:一个ActiveRecord :: Relation对象.这个关系已经有一个订单条款:
# This function cannot be changed
def black_box
Product.where('...').order("name")
end
def my_func
black_box.order("id")
end
Run Code Online (Sandbox Code Playgroud)
当我执行关系时,订单函数对ORDER_BY子句进行排序:
SELECT * FROM products
WHERE ...
ORDER_BY('name', 'id') // The first order function, then the second
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以指定在前一个之前插入我的订单功能的关系?那么SQL会是这样的吗?
SELECT * FROM products
WHERE ...
ORDER_BY('id', 'name')
Run Code Online (Sandbox Code Playgroud)
Len*_*ran 11
您可以使用重新排序方法重置原始订单并按列添加新订单.
重新排序(*参数)
用指定的顺序替换在关系上定义的任何现有订单.
User.order('email DESC').reorder('id ASC') # generated SQL has 'ORDER BY id ASC'
Run Code Online (Sandbox Code Playgroud)
随后将对相同关系的订单调用进行追加.例如:
User.order('email DESC').reorder('id ASC').order('name ASC')
# generates a query with 'ORDER BY id ASC, name ASC'.
Run Code Online (Sandbox Code Playgroud)