Railsで多対多の関係を表現する

例えばUserモデルとCompanyモデルが多対多(お互いhas_many)の関係であることを表現するときは, 中間のモデルCompaniesUser(アルファベット順にならべる)を使う.

それぞれコードは以下のようになる.

# app/models/user.rb
class User < ActiveRecord::Base
  has_many :companies_users
  has_many :companies, through: :companies_users
end
# app/models/company.rb
class Company < ActiveRecord::Base
  has_many :companies_users
  has_many :users, through: :companies_users
end
# app/models/companies_user.rb
class CompaniesUser < ActiveRecord::Base
  belongs_to :company
  belongs_to :user
end