2015-06-22 39 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只是爲了回想起事情。

相關問題