我正在使用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" 
第一个错误说"to_hash"未定义,第二个"has_key"未定义.然后我真的不知道怎么做,基本上我想找到"uid"是否存在,如果是这样的话得到它的对应值.
非常感谢你的提示.
顺便说一句,它只响应"entry.uid",但如果搜索键是以字符串形式提供的,那该怎么办呢?例如,
def get_value(key)
  if entry has key 
    return key's value
  end
end
sca*_*guy 27
:uid是一个Symbol.那不是String.
试试这个:
e.has_key? :uid
键“uid”不存在。尝试
e = Entry.new.myhash
e.has_key?(:uid)
那应该返回true。如果这给您带来错误,则问题可能出在您的班级中。确保在 initialize 方法中定义了 myhash,并且您使用 getter 方法(或 attr_reader)能够访问该变量。你可以用
attr_reader :myhash
就在 initialize 方法之前。