我不明白当rails有足够的智能来完成大部分的工作,而不是为什么我们需要在使用has_and_belongs_to_many
关联时明确定义连接表?为什么我们需要在HABTM中显式定义连接表?
0
A
回答
0
Rails在这里也很聪明。您并不总是必须将连接表的名称告诉Rails; Rails有足够的智能来解决它。你只需要创建一个迁移来生成表,所有其他的任务将由Rails处理。
比方说,你有以下两个表:
作者
书
的作者很多书,一本书是由许多作者撰写。 Rails将自动地 preiect连接表名称:authors_books
- 您只需编写迁移来创建它。
然后,这个任务很简单。
author = Author.first
author.books # all the books authored by the first author
book = Book.first
book.authors # all the authors of the first book
new_book = Book.new
author.books << new_book # add a new book to an author
author.save
new_author = Author.new
books.author << new_author # add a new author to a book
请记住,它不一定总是这样。您也可以更改表名称。
1
我想你只是考虑从数据库主题阅读正常形式。
如果Rails没有has_and_belongs_to_many
的连接表,那么对于相同的记录将会有多个条目违背正常形式。这是一个guide只是为了回想起事情。
相关问题
- 1. 为什么我们需要在MongoDB中定义数据模型
- 2. 为什么我们需要IAudioRenderClient接口
- 3. HABTM连接表需要索引吗?
- 4. 我是否需要手动为HABTM连接表创建迁移?
- 5. 为什么我们需要的Weblogic非活动连接超时
- 6. MySQL连接器网络为什么我们需要它?
- 7. in solrImportScheduler为什么我们需要为delta导入定义reBuildIndexBeginTime?
- 8. 为什么我们需要在JavaScript
- 9. 为什么我们需要定义odbc连接来连接到sql server(但不是总是)
- 10. 存储库模式 - 为什么我们需要接口?
- 11. 为什么我们只需要导入定义文件
- 12. 为什么显示连接未定义?
- 13. 节点为单线程时,为什么我们需要node.js中的连接池?
- 14. 为什么我们仍然需要我们自己定义的功能比较
- 15. 为什么我们需要在C#中锁定和对象?
- 16. 为什么我们需要在boost中绑定成员函数?
- 17. 为什么我们需要在Apache Kafka中指定Serializer?
- 18. 为什么我们需要在Spring中指定HttpMessageConverter?
- 19. 为什么我们在抽象类存在时需要接口?
- 20. 为什么我们需要在MSIL中显式调用父构造函数?
- 21. DavLockDB:我们需要什么?
- 22. 无法创建记录,因为连接表需要created_at(HABTM + Rails)
- 23. 为什么我们需要在程序集中定义.data和.text部分?
- 24. 为什么我们要在AppDelegate中自定义UINavigationBar的barTintColor?
- 25. 为什么我们需要simple_one_for_one?
- 26. 为什么我们需要TensorFlow tf.Graph?
- 27. 为什么我们需要使用prompt.start()?
- 28. 为什么我们需要scalaz.stream迭代?
- 29. 为什么我们需要WCF
- 30. 为什么我们需要Anaconda 2.7?
你说的是迁移,对吗?这是一个真正的问题还是更多的评论?你不必在ruby-code中指定它,但你必须首先在数据库中构建它。 – nathanvda