我不明白當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