Class is converting fixnum to array!?!

Hi all

I have made a class to return a value of either 1 or 0 depending on
conditions, however once it returns the fixnum is converted to an Array?

user = 0

puts user.class # -> fixnum
user = My_class.test(name)
puts user.class # -> Array

class My_class

self.test(name)
if name == name then
return 1
else
return 0
end

end

end

this is an example and not the true code, the principle is there, the
basics are that when a value is returned it converts user to an
Array???

Thanks all

Stuart


Hello !

> user = 0
>
> puts user.class # ->
fixnum
> user = My_class.test(name)
> puts user.class # ->
Array
>
>
> class My_class
>
> self.test(name)
>
if name == name then
> return 1
> else
> return
0
> end
>
> end
>
> end

There are few
things missing in you code, as is, it doesn’t run. It tried to modify
it, and then I get the expected results (not the ones you point
out).

Could you please provide us with a minimum working
example ?

Cheers !

Vince

Stuart B. wrote:

end

end

this is an example and not the true code, the principle is there, the
basics are that when a value is returned it converts user to an
Array???

That’s exactly the reason why we cannot possibly help you here. The
code above clearly does not return an array. Try using “p” to print out
the result of calling “test” to get an idea what goes wrong.

Kind regards

robert

Stuart B. wrote:

this is the full class and code to call it, it out puts fixnum then
array
[…]
ldap.search( :base => treebase, :filter => filter ) do |entry|

  	if "#{entry["samaccountname"]}" == "#{name}" then
  	return 1
  	else
  	return 0
  	end

  end

What if you never enter that block, because ldap.search never found
anything?

Then the result of ldap.search will be returned, probably an empty
array.

this is the full class and code to call it, it out puts fixnum then
array

class Ldap

def self.auth(name)

	ldap= Net::LDAP.new :host => '172.16.1.1', :port => 389, :auth => 

{:method => :simple,:username => “[email protected]”,:password =>
“password”}
filter = Net::LDAP::Filter.eq( “samaccountname”, “#{name}” )
treebase = “ou=accounts,dc=example,dc=com”

	ldap.search( :base => treebase, :filter => filter ) do |entry|

		if "#{entry["samaccountname"]}" == "#{name}" then
		return 1
		else
		return 0
		end

	end

end

end

address = “[email protected]

username = “#{address}”.sub(/@.*/, ‘’)
puts user.class
user = Ldap.auth(username)
puts user.class

Carlos wrote:

What if you never enter that block, because ldap.search never found
anything?

Then the result of ldap.search will be returned, probably an empty
array.

Thats it, thanks very much :slight_smile: