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