ActiveRecord.find results as array of arrays

Howdy. I imagine this is an elementary Ruby question, but I'd love to learn the right Ruby idiom for this.

I'd like to take the results of an ActiveRecord.find() and turn them into an array of arrays [[item1_col1,item1_col2], [item2_col1, item2_col2]].

Here's my code sample of the brute force way I'm doing it, but I bet it can be reduced fewer lines of code...

    @crit_sections = Hash.new     x = Reference.find(       :all,       :select => "refid,name",       :conditions => "ref_type = 'Division'",       :order => "name")

    ar =     x.each do |xi|       ar.push([xi.refid, xi.name])     end     @crit_sections["division"] = ar

Much thanks! Michael

You can use the collect method

@crit_sections[:division] = Reference.find(:all,                                                             :select => "refid,name",

:conditions => "ref_type = 'Division'",                                                             :order => "name").collect { |r| [ r.refid, r.name ] }

I took the liberty of using a symbol for your hash key instead of a string. Read up on symbols - in simplest terms, they are like strings without all the string functionality, which we usually don't need anyway for hash keys.

That's exactly what I was after. I knew it was possible, but I was missing "collect" :slight_smile:

As for symbols, at one point I used them a lot, but then I ran into some places that seemed to really want strings. Out of confusion, I stopped using symbols in a lot of cases. I will re-evaluate where I'm using strings though.

Thanks!