我以前只创建了一个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的事情? –