例をあげましょう。
- User テーブル
 - Book テーブル
 
という二つのテーブルを多対多のリレーションで結ぶ場合、中間テーブルとして
- BookUser テーブル
 
が必要となります。ちなみに、中間テーブルの名前をここでは「BookUser」としていますが、どんな名称でも問題ないはずです。
中間テーブルを意識しないアクセスを実現するには、
Book クラス内に
  has_many :book_users
  has_many :users, :through => :book_users
User クラス内に
  has_many :book_users
  has_many :books, :through => :book_users
が必要となります。
参考URI:
http://7mi.wkeya.com/archives/611
http://blog.notsobad.jp/post/70028473972/has-many-through