2015-06-22 44 views
0

我不明白当rails有足够的智能来完成大部分的工作,而不是为什么我们需要在使用has_and_belongs_to_many关联时明确定义连接表?为什么我们需要在HABTM中显式定义连接表?

+0

你说的是迁移,对吗?这是一个真正的问题还是更多的评论?你不必在ruby-code中指定它,但你必须首先在数据库中构建它。 – nathanvda

回答

0

Rails在这里也很聪明。您并不总是必须将连接表的名称告诉Rails; Rails有足够的智能来解决它​​。你只需要创建一个迁移来生成表,所有其他的任务将由Rails处理。

比方说,你有以下两个表:

  1. 作者

的作者很多书,一本书是由许多作者撰写。 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只是为了回想起事情。

相关问题