Hashの配列から任意のキーで抜き出す
<Hash>
.pluck(:<key1>, :<Key2>, ...)
.map {|<Key1>, <Key2>, ...| {<Key1>: <Key1>, <Key1>: <Key2>, ...}}
以下みたいに書ける(Active Recordの場合select使えばいいんですけど)。
User
.find(1)
.pluck(:name, :desc)
.map {|n, d| {name: n, desc: d}}
# => [{name: "a", desc: "This is a"}]
DRYに書くとこんなん。keys.zipのとこのkeysだけ変えればキーをすり替えられる。
def pluck_by(*keys)
pluck(*keys).map {|obj| keys.zip(obj).to_h}
end