我不明白rails是否足够聪明,可以自行完成大部分内容,而不是为什么我们需要在使用has_and_belongs_to_many
关联时明确定义连接表?
答案 0 :(得分:1)
我认为你只是考虑从数据库主题中阅读普通表格。
如果Rails没有has_and_belongs_to_many
的联接表,那么同一记录的多个条目将违反正常形式。这是guide只是为了回忆起事情。
答案 1 :(得分:0)
Rails在这里也很聪明。您不必总是将连接表的名称告诉Rails; Rails非常聪明,可以解决这个问题。您只需要创建一个迁移来生成表,Rails将会处理所有其他任务。
假设您有以下两个表:
作者
书
一位作者撰写了许多书籍,一本书由许多作者撰写。 Rails将自动预测连接表名称: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
请记住,它不一定总是这样。您也可以更改表名。