我以前只創建了一個has_and_belongs_to_many關聯,它與has_many:through不同。對於has_many:通過關聯,我需要一個連接表嗎?實際聯繫如何工作?我需要索引嗎?我無法找到一個很好的教程,有什麼建議嗎?我是否需要has_many的連接表:通過關聯?
回答
是的,你需要連接表。 這顯示了:http://railscasts.com/episodes/47-two-many-to-many
這也可能有幫助; has_many :through questions
通過,如果你需要的條件進行搜索,這將有助於方式:Has many through associations with conditions
也很大,例如與Rails nested form with has_many :through, how to edit attributes of join model?編輯連接表的嵌套屬性的代碼。
所有這些事情,你可能會發現自己想要做:)
指數是可選的,也是由DB改變排序。 mySQL曾經一次只支持1個。不知道這是否改變。
這取決於您想如何使用has_many :through
關係。有兩種不同的情況下(在guide to relations
- 對於n命名爲:米關係:引導在該示例中是醫師有約會與患者
- 爲1:n和另外的1:N的關係:指南中的示例是1個文檔有很多部分,1個部分有很多段落
對於第一個,你需要連接表,你不需要索引。對於第二個,你不需要他們
我不會說第二個例子不需要連接表。 「Sections」在技術上是Document和Paragraphs之間的連接表,即使將它想象爲「連接表」,也是很奇怪的。 – bricker
所有我想說的是取決於'has_many:through'的用法,您將需要一個連接表或不連接。如果一個文檔有很多節,並且每個節都有很多段落,那麼你首先獨立創建了模型,然後在模型中添加了關係has_many和belongs_to。稍後,您添加快捷方式'has_many:through'以直接從文檔中獲取所有段落。我不會將sections表命名爲連接表,但是從代碼中,有一個'has_many:through'關係。 – mliebelt
- 1. 導軌的has_many:通過關聯:保存實例到連接表
- 2. Has_many,通過關聯
- 3. HAS_MANY:通過關聯
- 4. 需要來自rails連接表的數據,has_many:通過
- 5. 通過關聯在Rails 4中發佈連接表和has_many
- 6. Rails has_many:通過關聯。通過鏈接刪除關聯?
- 7. 我是否需要關閉Apache HTTPAsyncClient中的過期連接?
- 8. 我是否需要爲has_many:through關聯創建一個關聯表?
- 9. 連接範圍:has_many:關聯
- 10. Rmpi是否需要互聯網連接?
- 11. GCM是否需要互聯網連接?
- 12. 刪除has_many:通過鏈接關聯
- 13. 爲has_many&belongs_to關聯創建連接表
- 14. has_many:通過關聯問題
- 15. Has_many通過:關聯category_sizes
- 16. 設置Has_Many:通過關聯
- 17. has_many:通過關聯錯誤
- 18. 通過HQL的Hibernate ScrollableResults需要每個關聯都需要左連接提取
- 19. 每個belongs_to has_many關聯是否需要嵌套路由?
- 20. Rails has_many:通過關聯表輸入
- 21. 是否需要關閉連接
- 22. 推送通知是否需要互聯網連接?
- 23. Rails has_many通過過濾的關聯
- 24. 我是否需要使用關鍵字關閉SQL Server連接?
- 25. 如何通過關聯has_many通過關聯在rails中執行has_many?
- 26. Rails 3 has_many的問題has_many:通過關聯和視圖/表單
- 27. 如何在rails中通過和belongs_to關聯執行has_many的連接表?
- 28. 如何通過關聯通過has_many關聯設置has_one?
- 29. 問題建設has_many:通過關聯 - 認爲我很接近
- 30. 保存has_many,:通過關聯表中的連接時,在連接表中有額外的屬性
好酷,我看了這個railscast。有點困惑 - 他是否通過遷移顯式創建了連接表,或者通過模型創建has_many,然後使用db:migrate自動創建連接表? –
除非遷移或模式文件告訴它,否則不會創建表。 – bricker
因此,通過創建連接模型,然後遷移...創建「連接表」?還是我仍然需要做rails遷移events_model_join的事情? –