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

rails:3351

From: naopontan <naopontan@g...>
Date: Fri, 18 Dec 2009 10:50:53 +0900
Subject: [rails:3351] Re: 多対多の設計について

naopontan です。

>  [会員] n --- n [申込] n --- 1 [種目]
>
> でどうでしょう。

ふむふむ。


> has_and_belongs_to_many を使っているので、

確認になってしまいますが...
あえて has_many :through ではなく、 has_and_belongs_to_many(habtm) を使うのが
ミソという事ですよね?
#固定観念で habtm で出来ることは has_many :through で全て出来ると思い込んでました。


2009年12月17日21:00 Shinya Kawaji <kawaji@g...>:
> かわじ、です。
>
>
>> 多対多の関連を考えました。
>> [会員] --- [申込] --- [種目]
>
>> 会員と申込は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/
>

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