2010-09-09 2 views
1

Je fais une simple recherche Net: LDAP et quand je produis un attribut d'entrée qui peut ne pas exister pour chaque entrée, j'obtiens une erreur "NoMethodError: méthode non définie 'de some_attribute' »Ruby Net: LDAP-NoMethodError pour les attributs qui n'existent pas

Voici le code:

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 

J'ai essayé de faire aussi:

if entry.respond_to?(some_attribute) 
    puts "#{entry.some_attribute}" 
end 

cela ne fonctionne pas, il retourne comme false pour chaque entrée (lorsque certains entrées avoir l'attribut).

Répondre

0

Ruby attend un symbole dans l'appel de méthode 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 
Questions connexes