您可以使用
order
通过他们的
name
属性:
#Â => [#<model:0x007f8293e61820 id: 1, name: "a", field1: "1"...,
...
#<model:0x007f8293e60150 id: 9, name: "c", field1: "1"...]
然后使用
pluck
仅获取
和
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"]]}
然后使用map获取主哈希中每个键值的第二个数组值:
#Â => [["a", "4"], ["b", "3"], ["c", "0"]]
Model
.order(:name)
.pluck(:name, :field1)
.group_by(&:first)
.map{|_,v| v[1]}
.to_h
# => {"a"=>"4", "b"=>"3", "c"=>"0"}