2009-11-02 54 views
0

我將使這個快速。我使用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散列,而不是與現有的散列合併。提前致謝。

回答

2

當使用哈希#合併!你需要提供一個額外的散列,這個散列是正確的,或者只是將你所有的結果混合在一起。

我敢打賭,你真正需要的是一個類似於:

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