Newbie question (Array.<<)


#1

I must be missing something…

I’ve got the following class method. The problem is the line that reads
objs
<< self.new(obj). The first time through the loop, the objs array looks
correct. After the second iteration however, the objs array contains 2
copies of the second object created.

Here is the output from the method:

“00630000003BqXwAAK”
[00630000003BqXwAAK]
“00630000003awD3AAI”
[00630000003awD3AAI, 00630000003awD3AAI]

and here is the method:

def FindAll(criteria)
  self.GetAllFields if (defined? @@attribs) == nil
  result = @@connection.query([:query, "select #{@@attribs} from #{

self.to_s} where #{criteria}"])
objs = []
result.queryResponse.result.records.each do |obj|
p obj.Id
objs << self.new(obj)
p objs
end
objs
end

Thanks!

Todd B.


#2

[Todd B. removed_email_address@domain.invalid, 2006-01-08 04.15 CET]

[00630000003BqXwAAK]
result.queryResponse.result.records.each do |obj|
Probably this object is being reused ----------------^^^

Look at the documentation (or source code) of the method that does the
iteration.

Good luck.


#3

[Todd B. removed_email_address@domain.invalid, 2006-01-08 04.15 CET]

[00630000003BqXwAAK]
result.queryResponse.result.records.each do |obj|
p obj.Id
objs << self.new(obj)
Or, more probably ^^^^^^^^ here is the problem :). Try self.class.new if
you
want a new object of the same class as self.