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... ]