Ich benutze Suche von Net :: LDAP, der zurückgegebene Eintrag ist in etwa so.Wie überprüft man, ob ein Schlüssel in einem Ruby-Hash existiert?
#<Net::LDAP::Entry:0x7f47a6491c00
@myhash=
{:loginshell=>["/bin/bash"],
:cn=>["M... R..."],
:homedirectory=>["/mnt/home/m..."],
:uid=>["m..."],
:userpassword=>["{CRYPT}$1$3zR/C...$R1"],
...
}>
Ich habe versucht, das folgende zu tun, aber ist gescheitert.
(1)
e = entry.to_hash
e.has_key? "uid"
(2)
entry.has_key? "uid"
Der erste Fehler sagt "to_hash" undefiniert, der zweite "has_key" undefiniert. Dann weiß ich wirklich nicht, wie ich das machen soll, im Grunde möchte ich herausfinden, ob "uid" vorhanden ist und wenn ja, wie hoch ist der entsprechende Wert?
Vielen Dank für den Tipp.
BTW, reagiert es nur auf "entry.uid", aber wenn der Suchschlüssel als String zur Verfügung gestellt wird, wie geht das? zum Beispiel ist
def get_value(key)
if entry has key
return key's value
end
end
Wenn alles, was Sie haben, eine Zeichenfolge ist, könnten Sie auch "" uid ".to_sym" –
"has_key" nicht definiert, aber "to_sym" ist hilfreich. Vielen Dank. – user180574
'has_key?' - beachte das Fragezeichen - ist eine Methode jeder Instanz der 'Hash'-Klasse. Es kann nicht undefiniert sein, es sei denn, Sie verwenden es anders als eine Hash-Instanz. – scaryguy