2012-05-06 66 views
0

在一個新的Rails應用程序,我必須建立這種關係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

這是可能的,但複雜和凌亂,所以我不會。您可以定義has_many ..., :through => :plan協會輕鬆高效地訪問您遊覽的地方和活動等

Rails不提供belong_to協會:through選項,但你可以定義方便的方法來訪問這些,你可以查詢查找時通過使用:include選項有效地關聯記錄。

+0

但不會將的has_many:通過=>:計劃需要在計劃表中的place_id和ACTIVITY_ID?這不是問題嗎?我想知道是否可以在計劃表中使用通用的x_id&x_type列,然後設置has_many:through =>:plan關聯。這可能嗎? – hashpipe

+0

@hashpipe隨着':through' =>選項,ActiveRecord的檢查你正在通過相關聯,以確定它是如何與目標模型的模型。我只是試圖在Rails 3.2.3中進行確認。我創建了屬於一個'Aaa'模型':bbbs',有屬於許多''一個模型Bbb':cccs',然後設置'Aaa'已經和屬於許多':通過'cccs':BBB '。然後我就可以執行'Aaa.first.cccs',並且SQL是'SELECT「cccs」。* FROM「cccs」INNER JOIN「bbbs_cccs」ON「cccs」。「id」=「bbbs_cccs」。「ccc_id」 INNER JOIN 「商務改善局」 ON 「bbbs_cccs」。 「bbb_id」= 「商務改善局」。 「ID」 WHERE 「商務改善局」。 「ID」= 1' –

相關問題