ハッシュのネストを作りたい
class << self
def category_sort
order(small_category_id: "asc", id: "asc")
.group_by { |w| w.small_category.name }
end
end
上記の結果は下記のようなハッシュになります。
small_category1 => [data1,data2,data3]
small_category2 => [data4,data5]
small_category3 => [data6,data7,data8]
big_categoryがあるので、各big_categoryに関連するsmall_categoryをぶら下げたいと思っているのですが、どのようにプログラムを書いていいのかわかりません。
結果下記のようなイメージでデータを取りたいです。small_category1とsmall_category2はbig_category1にぶら下がっていて、small_category1とsmall_category2は各関連するデータを持っているようなイメージです。
big_category1 => small_category1 => [data1,data2,data3]
=> small_category2 => [data4,data5]
big_category2 => small_category3 => [data6,data7,data8]
下記のようにするとできるのですが、よりスマートなやり方があれば、ご教示いただきたいです。
class << self
def category_sort
r = order(small_category_id: "asc", id: "asc")
.group_by { |w| [w.small_category.big_category.name, w.small_category.name] }
hash = Hash.new { |h,k| h[k] = {} }
r.each do |k, v|
hash[k[0]][k[1]] = v
end
end
end