我试图通过包含parent_id和self_id的页面来过滤一个包含Hashie :: Mash gem的伪对象的数组(使用Hashie :: Mash gem的伪对象)。在这个函数中,我想创建一个新的哈希,我可以通过父对象索引子对象。
以下是我正在尝试的内容:
(父对象的parent_id
等于零。)
('hashies'是一个包含具有page_id属性的Hashie :: Mash对象的数组)
page_hash = Hash[hashies.map { |page|
if page.parent_id != "0" then [page.id, page] else [page.parent_id, page] end
}]
我想要的输出如下:
page_hash = {
#<Hashie::Mash id="978835" parent_id="0"> => [
#<Hashie::Mash id="980705" parent_id="978835">,
#<Hashie::Mash id="1049260" parent_id="978835">
]
}
但相反,似乎我只是改变了Hashie :: Mash对象本身,并改变了他们的parent_id和id。这是我的实际输出:
page_hash = {
#<Hashie::Mash id="1049100" parent_id="1044858"> =>
#<Hashie::Mash id="1049100" parent_id="1044858">
}
答案 0 :(得分:0)
尝试这样的事情:
by_id = hashies.group_by(&:id)
page_hash = hashies.group_by { |page| by_id[page.parent_id] }