加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – ActiveRecord更改或重置在作用域中定义的排序

发布时间:2020-12-17 03:41:36 所属栏目:百科 来源:网络整理
导读:我有一个使用另一个函数输出的函数:一个ActiveRecord :: Relation对象.这个关系已经有一个订单条款: # This function cannot be changeddef black_box Product.where('...').order("name")enddef my_func black_box.order("id")end 当我执行关系时,订单函
我有一个使用另一个函数输出的函数:一个ActiveRecord :: Relation对象.这个关系已经有一个订单条款:

# This function cannot be changed
def black_box
  Product.where('...').order("name")
end

def my_func
  black_box.order("id")
end

当我执行关系时,订单函数对ORDER_BY子句进行排序:

SELECT * FROM products
WHERE ...
ORDER_BY('name','id') // The first order function,then the second

有没有什么方法可以指定在前一个之前插入我的订单功能的关系?那么SQL会是这样的吗?

SELECT * FROM products
WHERE ...
ORDER_BY('id','name')

解决方法

您可以使用 reorder方法重置原始订单并按列添加新订单.

重新排序(*参数)

用指定的顺序替换在关系上定义的任何现有订单.

User.order('email DESC').reorder('id ASC') # generated SQL has 'ORDER BY id ASC'

随后将对相同关系的订单调用进行追加.例如:

User.order('email DESC').reorder('id ASC').order('name ASC')
generates a query with 'ORDER BY id ASC,name ASC'.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读