Please help me understand how arrays are translated in rails

Hi --

Okay, so I figured out what I was doing wrong.

This method:

def calculate_tsos(model, datavar, teamvar, valvar)
var = model.compiled_this_week.find(:all)
var.each_with_index do |rows, i|
   teamvar[i] = rows.team.id
   valvar[i] = rows.__send__(datavar)
   puts "#{model} [ Row #{i} | Team ID = #{teamvar[i]} | Team =
#{rows.team.name} | #{datavar} = #{valvar[i]}"
end
end

.. works fine ..

The problem was I forgot to pass empty arrays with the method variables
in my rake file:

to_team_id = []
to_value = []
update_tsos_offense = TsosOffense.new
update_tsos_offense.calculate_tsos(TotalOffense, "ydspgm", to_team_id,
to_value)

However, even doing this, I would like some feedback.

Should I be doing it this way or is there an easier way with what I'm
trying to accomplish?

In general, I would tend to have the method return values that you can
then assign to local variables, rather than creating accumulator
objects and passing them in as arguments.

   update_tsos_offense = TsosOffense.new
   to_team_id, to_value = calculate_tsos(TotalOffense, "ydspgm")

and have the method return arrays:

  def calculate_tsos(model, datavar)
    teamvar, valvar = [], []
    var = model.compiled_this_week.find(:all)
    var.each_with_index do |rows, i|
      teamvar[i] = rows.team.id
      valvar[i] = rows.__send__(datavar)
      puts "#{model} [ Row #{i} | Team ID = #{teamvar[i]} | Team =
            #{rows.team.name} | #{datavar} = #{valvar[i]}"
    end
    return teamvar, valvar
  end

I haven't really gotten my head into the problem-space of the
application itself, so I'm being kind of mechanistic about moving code
around (and haven't tested it), but that's at least a broad-stroke way
of rethinking it.

(Another thing to think about would be whether the calculation method
might belong in a class, rather than as a top-level routine. But I
can't really determine that from these excerpts.)

David