[前][次][番号順一覧][スレッド一覧]

rails:3349

From: Shinya Kawaji <kawaji@g...>
Date: Thu, 17 Dec 2009 21:00:09 +0900
Subject: [rails:3349] Re: 多対多の設計について

かわじ、です。


> 多対多の関連を考えました。
> [会員] --- [申込] --- [種目]

> 会員と申込は1対nの関係ですが、ダブルスの場合を考慮すると、この関係が
> 逆転します。
> つまり「1つの申込みに2人の会員が存在する」という事です。
> (Entryテーブルには user_id と pair_id を想定)
> 
> このような場合の DB設計を Rails で表現する良いアイデアがあればご教示下
> さい。
> #ダブルスの申込み時は[申込」を2レコード作ることで対応できそうですが、
> 何かと面倒くさそうです。

普通に考えて、

  [会員] n --- n [申込] n --- 1 [種目]

でどうでしょう。

class User < ActiveRecord::Base
  has_and_belongs_to_many :entries
end

class Entry < ActiveRecord::Base
  has_and_belongs_to_many :users
  belongs_to :item
end

class Item < ActiveRecord::Base
  has_many :entries
end

has_and_belongs_to_many を使っているので、
entries_users というテーブルが別途必要です。

# ある会員の申し込み
user.entries

# ある会員の申し込んだ種目
user.entries.collect(&:item)

# ある申し込みの会員
entry.users

# ある申し込みの種目
entry.item

# ある種目の申し込み
item.entries

# ある種目に申し込んだ会員
item.entries.collect(&:users)


--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      3348 2009-12-17 07:40 [naopontan@g...      ] 多対多の設計について                    
->    3349 2009-12-17 13:00 ┗[kawaji@g...         ]                                       
      3351 2009-12-18 02:50  ┗[naopontan@g...      ]                                     
      3352 2009-12-18 04:09   ┗[kawaji@g...         ]