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