【问题标题】:Ruby array sorting orderRuby数组排序顺序
【发布时间】:2017-10-13 11:24:36
【问题描述】:

我有这个由 activerecord 查询返回的数组:

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

我创建了一个简单的数组来与第一个数组进行比较:

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

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

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

所以在某些情况下比较不起作用,因为 activerecord 以一种方式排序并且 sort_by!排序另一个。

我该如何解决? 谢谢。

【问题讨论】:

  • 你想通过比较两者来达到什么目的?你能解释一下吗? @gui12344455
  • 是的,我正在使用 rspec 测试我的代码,其中一项测试是验证返回的数据是否正确排序。
  • 所以您正在尝试测试活动记录的order 方法。实际上,在 RSpec 中,我们负责测试我们编写的代码。您无需在这里测试订单。如果您需要为订单编写测试用例,在规范中您可以进行类似records = Model.only(:id, :name).order(:desc) 的查询并像这样检查expected(response_records).to eq(records)

标签: ruby-on-rails arrays sorting activerecord


【解决方案1】:

您可以尝试使用第二个参数订购 Activerecord。

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

【讨论】:

    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 2012-10-24
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多