您可以使用order
獲得通過他們的name
屬性訂購的記錄:
# => [#<model:0x007f8293e61820 id: 1, name: "a", field1: "1"...,
...
#<model:0x007f8293e60150 id: 9, name: "c", field1: "1"...]
然後使用pluck
只得到了name
和field1
屬性:
# => [["a", "1"], ["a", "4"], ["a", "2"], ["b", "3"], ["b", "3"], ["b", "2"], ["c", "1"], ["c", "0"], ["c", "1"]]
有了可以工作在您的結果作爲散列並使用group_by
按它們的第一個元素對它們進行分組:
# => {"a"=>[["a", "1"], ["a", "4"], ["a", "2"]], "b"=>[["b", "3"], ["b", "3"], ["b", "2"]], "c"=>[["c", "1"], ["c", "0"], ["c", "1"]]}
然後使用地圖,讓第二陣列值主散列每個鍵值:
Model
.order(:name)
.pluck(:name, :field1)
.group_by(&:first)
.map{|_,v| v[1]}
.to_h
# => {"a"=>"4", "b"=>"3", "c"=>"0"}
:
# => [["a", "4"], ["b", "3"], ["c", "0"]]
所以,你可以嘗試用