2009-11-02 8 views
0

Je vais faire vite. J'utilise Ruby/LDAP pour effectuer une recherche en utilisant mes critères de base_dn. Je récupère un résultat (de type Entrée). Je peux convertir l'objet de type Entrée en Hash avec la méthode to_hash. Le problème est lorsque le résultat est retourné c'est plusieurs objets de type Entrée. Je veux les convertir en hash les ajouter en boucle. Regardez ceci:ajouter à hachage tout en boucle

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

Vous savez si je suis Looping à travers et je voudrais ajouter des objets à un tableau, je peux utiliser < < et il a ajouté comme il passe par. J'ai lu le RDOC, la méthode de fusion ou de mise à jour de hachage devrait faire semblable mais en vain. Quelqu'un pourrait-il me donner un indice sur la façon dont je peux convertir les objets Entrée en hachage et en pièce jointe.

Le code ci-dessus me donne la dernière entrée dans la recherche. Il écrase fondamentalement le hachage searchResult à chaque fois plutôt que de fusionner avec le hachage existant. Merci d'avance.

Répondre

2

Lors de l'utilisation de Hash # merge! vous devrez fournir un hachage supplémentaire qui est correctement codé ou il ne fera que mélanger tous vos résultats ensemble.

Je parie que ce que vous avez vraiment besoin est quelque chose qui ressemble à:

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

Ici entry.id représente un identifiant unique qui peut être utilisé pour diviser les enregistrements d'entrée.

Puisqu'un Hash est un magasin de clé/valeur, vous ne pouvez pas vraiment "l'ajouter" comme vous le pouvez pour un tableau, qui est essentiellement une liste d'objets.

+0

Ah ... ça marche parfaitement .. merci! –

+0

En outre, merci d'expliquer pourquoi je faisais n'aurait pas fonctionné. Je ne me regardais pas non plus. Merci beaucoup –