我正在做一个简单的Net:LDAP搜索,当我输出的条目属性可能不存在于每个条目时,我收到错误“NoMethodError:undefined method'some_attribute'”
以下是代码:
require 'rubygems'
require 'net/ldap'
ldap = Net::LDAP.new
ldap.host = 'ldap.example.com'
ldap.port = 389
if ldap.bind
filter = Net::LDAP::Filter.eq( "sn", "Smith" )
treebase = "ou=people,o=company"
ldap.search( :base => treebase, :filter => filter, :return_result => false) do |entry|
puts #{entry.some_attribute}
end
end
else
puts "bind unsuccessful"
end
我也尝试过:
if entry.respond_to?(some_attribute)
puts "#{entry.some_attribute}"
end
这不起作用,它对每个条目都返回false(当某些条目具有该属性时)。
答案 0 :(得分:0)
Ruby希望在respond_to?
方法调用中使用符号。
ruby-1.8.7-p299 > class Foo
ruby-1.8.7-p299 ?> attr_accessor :some_attr
ruby-1.8.7-p299 ?> end
=> nil
ruby-1.8.7-p299 > Foo.new.respond_to?(some_attr)
NameError: undefined local variable or method `some_attr' for #<Object:0xb77ce950>
from (irb):4
ruby-1.8.7-p299 > Foo.new.respond_to?(:some_attr)
=> true