has_many :through

has_many (along with a belongs_to in the other class) if for a 1-n relation, but you are modelling an n-m relation.

class Company < ActiveRecord::Base    has_and_belongs_to_many :clients, :class_name => "Company", :join_table => :company_clients    has_and_belongs_to_many :suppliers, :class_name => "Company", :join_table => :company_suppliers end

I'm not entirely sure that this works, but it's more likely to.