extending Array class with a method

Hi,

Let's say I have an ActiveRecord::Base class and I want to be able to
call a method on an Array of these items. For instance, perhaps
there's a class called Country and another called business, and I'd
like to be able to do something like

great_white_north = Country.find_by_name('Canada')
canuck_enterprises = great_white_north.businesses

countries = Country.find_by_name(['Canada','UK','Australia')
we_love_the_queen_enterprises = countries.businesses

So I need to somehow extend the Array class I think. Tips?
Ben

Hi Ben,

great_white_north = Country.find_by_name('Canada')
canuck_enterprises = great_white_north.businesses

countries = Country.find_by_name(['Canada','UK','Australia')
we_love_the_queen_enterprises = countries.businesses

we_love_the_queen_enterprises = countries.map { |c| c.businesses }

So I need to somehow extend the Array class I think. Tips?

No you don't ... :slight_smile:

Regards Florian

Hi,

Let's say I have an ActiveRecord::Base class and I want to be able to
call a method on an Array of these items. For instance, perhaps
there's a class called Country and another called business, and I'd
like to be able to do something like

great_white_north = Country.find_by_name('Canada')
canuck_enterprises = great_white_north.businesses

Assuming you have:

class Country < ActiveRecord::Base
   has_many :businesses
end

Then you're practically already there!

countries = Country.find_by_name(['Canada','UK','Australia')
we_love_the_queen_enterprises = countries.businesses

countries = Country.find(:all, :conditions => [ 'name IN (?)', ['Canada', 'UK', 'Australia'] ])
we_love_the_queen_enterprises = countries.map(&:businesses).flatten

So I need to somehow extend the Array class I think. Tips?
Ben

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com