Ruby Net: LDAP-NoMethodError для атрибутов, которые не существуют - PullRequest
1 голос
/ 09 сентября 2010

Я выполняю простой поиск по Net: LDAP, и при выводе атрибута записи, который может отсутствовать для каждой записи, я получаю сообщение об ошибке "NoMethodError: неопределенный метод '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 для каждой записи (когда некоторые записи имеют атрибут).

1 Ответ

0 голосов
/ 10 сентября 2010

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...