2012-05-06 6 views
0

は、私が関係Railsはbelongs_toのユーザーですが、多形has_manyモデルですか?新しいレールのアプリで

Trip -> 1-to-1 -> Plan 
Plan -> n-to-n -> Places 
Plan -> n-to-n -> Activities 

と同様にその逆の関係ofcourseのこの種を構築する必要があります。..

​​の表は、私が考えているものです。余分なテーブルなしで直接Trip -> PlacesTrip -> Activitiesの関係を持つことが可能かどうか。

ない場合は、何をすることが、今後の計画モデルのn対nの関係を持っている可能性が他のモデルがあるかもしれないことを念頭に置いて、このような関係を処理するための効率的な方法があります。

更新 - 私はこの質問と答えを見つけました。私は

ActiveRecord, has_many :through, and Polymorphic Associations

だと同じことを行うために探して誰かのために役に立つかもしれませんそれは可能、しかし複雑で厄介なので、私はないでしょうあなたに

答えて

3

ありがとうございます。あなたは、Railsがbelong_to団体のための:throughオプションを提供していませんが、あなたがそれらにアクセスするための便利なメソッドを定義することができ、あなたが照会することができ

など、簡単かつ効率的に旅行のための場所や活動にアクセスするために has_many ..., :through => :plan関連付けを定義することができます検索時に :includeオプションを使用すると、関連するレコードを効率的に検索できます。

+0

ただし、has_many:through =>:planはplanテーブルのplace_idとactivity_idを必要としませんか?それは問題ではないでしょうか?プランテーブルにgeneric x_id&x_typeカラムを設定し、has_many:through =>:planアソシエーションを設定できるかどうか疑問に思っていました。これは可能でしょうか? – hashpipe

+0

@hashpipe ':through' =>オプションを指定すると、ActiveRecordは関連付けられているモデルを調べて、ターゲットモデルとの関係を判断します。私はこれをRails 3.2.3で確認しようとしました。私は ':bbbs'に属する' Aaa'モデルを作成しました。これは多くの ':cccs 'を所有する' 'Bbb''モデルであり、' 'Aaa''は多くの':cccs'〜 ':bbb '。 * "cccs" INNER JOIN "bbbs_cccs" ON "cccs"。 "id" = "bbbs_cccs"。 "ccc_id"このコマンドを実行すると、 "Aaa.first.cccs" INNER JOIN "bbbs" ON "bbbs_cccs"。 "bbb_id" = "bbbs"。 "id" WHERE "bbbs"。 "id" = 1' –

関連する問題