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

On Jun 18, 2007, at 2:03 PM, Ben Nevile wrote:

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 B. http://agileconsultingllc.com
[email protected]