在循环时追加散列

问题描述:

我将使这个快速。我使用Ruby/LDAP来使用我的base_dn条件进行搜索。我得到一个结果(类型Entry)。我可以使用to_hash方法将Entry类型的对象转换为哈希。问题是当结果返回时它是Entry类型的多个对象。我想将它们转换为散列,并在循环时附加它们。看看这个:在循环时追加散列

connection.search(base_dn,scope,filter) do |entry| 
     #pp entry.to_hash 
     searchResult.merge!(entry.to_hash) 
end 

你知道,如果我通过循环和我想的对象添加到一个数组,我可以使用< <,当它经过它会添加它。我读RDOC,散列的合并或更新方法应该做类似但无济于事。有人可以给我一个关于如何将Entry对象转换为散列和附加的提示。

上述代码为我提供了搜索中的最后一个条目。它基本上每次都会覆盖searchResult散列,而不是与现有的散列合并。提前致谢。

当使用哈希#合并!你需要提供一个额外的散列,这个散列是正确的,或者只是将你所有的结果混合在一起。

我敢打赌,你真正需要的是一个类似于:

connection.search(base_dn,scope,filter) do |entry| 
    searchResult[entry.id] = entry.to_hash 
end 

这里entry.id代表一个唯一的标识符,可用于拆出入门记录。

由于哈希是一个键/值存储,所以您不能像数组那样真正“追加”它,它实际上是一个对象列表。

+0

嗯......完美的作品..谢谢! – 2009-11-02 15:51:04

+0

另外,谢谢你解释我为什么不能工作。我也不看好我。非常感谢 – 2009-11-02 15:55:45