我正在使用Net :: LDAP的搜索,返回的条目是这样的。
#<Net::LDAP::Entry:0x7f47a6491c00
@myhash=
{:loginshell=>["/bin/bash"],
:cn=>["M... R..."],
:homedirectory=>["/mnt/home/m..."],
:uid=>["m..."],
:userpassword=>["{CRYPT}$1$3zR/C...$R1"],
...
}>
我尝试了以下操作,但失败了。
(1)
e = entry.to_hash
e.has_key? "uid"
(2)
entry.has_key? "uid"
第一个错误说&#34; to_hash&#34; undefined,第二个&#34; has_key&#34;未定义。然后我真的不知道该怎么做,基本上我想找到&#34; uid&#34;存在,如果是,得到其对应的价值。
非常感谢您的提示。
顺便说一句,它只响应&#34; entry.uid&#34;,但如果搜索键是以字符串形式提供的,那该怎么做?例如,def get_value(key)
if entry has key
return key's value
end
end
答案 0 :(得分:26)
:uid
是Symbol
。这不是String
。
试试这个:
e.has_key? :uid
答案 1 :(得分:4)
关键&#34; uid&#34;不存在。尝试
e = Entry.new.myhash
e.has_key?(:uid)
应该返回true。如果这给你一个错误,问题可能在你的班级。确保在initialize方法中定义了myhash,并且使用getter方法(或attr_reader)来访问变量。你可以用
attr_reader :myhash
在initialize方法之前。