2017-10-13 104 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)