2017-10-13 101 views
0

我有这样的阵列由ActiveRecord的查询返回:红宝石数组排序顺序

SELECT id, value FROM table ORDER BY value DESC 
[1054, 86], [1062, 86], [1059, 84] 

而且我已经创建了一个简单的阵列与第一阵列进行比较:

array.sort_by! {| object | object.access_count}} .reverse

但是,当我比较两个数组的结果是不同的:

activerecord => [1054, 86], [1062, 86], [1059, 84] 
array.sort_by! => [[1062, 86], [1054, 86], [1059, 84] 

因此,在某些情况下,比较不工作,因为ActiveRecord的一个排序方式sort_by!排序另一个。

我该如何解决这个问题? 谢谢。

+0

你试图通过比较两者来实现什么?你能解释一下吗? @ gui12344455 –

+0

是的,我使用rspec来测试我的代码,一个测试是验证返回的数据是否正确排序。 – gui12344455

+0

所以你正在尝试测试活动记录的'订单'方法。实际上在RSpec中,我们有责任测试我们编写的代码。你不需要在这里测试订单。如果你需要为命令编写测试用例,在规范中你可以做一个类似于'records = Model.only(:id,:name).order(:desc)'的查询并且像这样检查'expected(response_records) .to eq(记录)' –

回答

1

你可以尝试命令Activerecord与第二个参数。

.order(value: :desc, id: :desc)