Ruby on Rails按id(和版本?)排序

Dav*_*cio 8 ruby activerecord ruby-on-rails ruby-on-rails-3

在尝试使用id排序(和分页)时,从日志中获取:

SELECT `audits`.* FROM `audits` ORDER BY version, id DESC LIMIT 50 OFFSET 0
Run Code Online (Sandbox Code Playgroud)

我目前正在使用此代码:

@records = Audit.order("id DESC").page(page).per(50)
Run Code Online (Sandbox Code Playgroud)

问题是检索到的列表没有按id降序正确排序.

顺便说一句,我使用audited-activerecord gem进行审核,这有关系吗?

Nic*_*gan 17

我猜你的gem正在按版本排序的Audit模型上设置默认范围,所以目前它是按版本列按升序排序,并且,只有当两个记录相同时,才按顺序排序id按降序排列.

要解决此问题,您可以unscoped在您的链上添加前缀:

Audit.unscoped.order("id DESC").page(page).per(50)
Run Code Online (Sandbox Code Playgroud)


Pat*_*ann 7

尝试:

@records = Audit.except('order').order("id DESC").page(page).per(50)
Run Code Online (Sandbox Code Playgroud)

except('order')应该删除添加到查询任意顺序关系