Итак, у меня есть массив записей, и я хотел бы сгруппировать по 2 уровням
По сути, я хотел бы group_by{|x| x.field1 }
, а затем каждое значение в хэше будет далее сгруппировано по field2.Эффективно приводя к дереву, которое я могу выгрузить.
def treemaker(array = [])
tree = ledgers.group_by{|x|x.master_group}
tree.each{|x,z| tree[x] = z.group_by{|y| y.account_group}}
tree
end
Я бы тогда рендерил дерево таким образом, чтобы его можно было вставить в плагин "tree" javascript.
Есть либолее эффективный способ?
Пример ввода: Массив объектов ActiveRecord, в котором содержится модель, поля master_group, account_group и name
Class MyModel < ActiveRecord::Base
validates :master_group, :account_group, :name, :presence => true
end
Образец выхода:
{"master_group1" => {"account_group1" => ["name1","name2",...],
"account_groupx" => ["name3", "name4",...],
....},
"master_group2" => {"account_group2" => ["namex", "namey"]},
...
}
Я специально не ищу решение «группировки SQL» (но это тоже было бы неплохо).Просто решение с использованием перечислимых в любом заданном списке объектов ruby.